C PROGRAM JGSP2.FT C C ---------------- C C C ### SUBROUTINE JGSP2 C C C PETER LEMKIN C IMAGE PROCESSING UNIT, DCBD C NATIONAL CANCER INSTITUTE C NATIONAL INSTITUTES OF HEALTH C 9000 ROCKVILLE PIKE C BETHESDA, MD. 20014 C C JULY 26, 1977 C JAN 27, 1977 C C C INTRODUCTION C ------------ C JGSP2.FT IS A SUBROUTINE USED WITH JGSPLOT.FT C C IT COMPUTES SOME OF NORMAN PRESSMAN'S "T" STATISICS C OF Pk(i,j). NOTE: Pk IN (JBM,JHGH), THE TOTAL DOUBLE C PRECIONS DATUM COUNT IS IN FA. C C FOR NOW COMPUTE C C T15=(STD OF Pk(i,j))/(Mean of Pk(i,j)) --- COEFF OF VARIATION C C T19=SUM over i SUM over j [0.5*|i-j|*Pk(i,j)] C --- diagonal moment. C OPDEFS C ------ S OPDEF TADI 1400 S OPDEF DCAI 3400 S OPDEF ISZI 2400 C S OPDEF DISP1 6435 S OPDEF DISP2 6436 C C S OPDEF SWAB 7431 S OPDEF SWBA 7447 C S OPDEF MUY 7405 S OPDEF DVI 7407 S OPDEF MQA 7501 S OPDEF MQL 7421 S OPDEF KRS 6034 S OPDEF BSW 7002 C C C C C [1] INIT S ENTRY JGSP2 S JGSP2, BLOCK 2 C C C C [2] COMPUTE T19 AND MEAN C PRINT THE MIN ENCLOSING RECTANGLE AND ITS SKEWNESS CALL DPCVRT(FA,DATUMCOUNT,-1) SKEW=FLOAT(KX2-KX1)/FLOAT(KY2-KY1) DO 200 I=1,3,2 200 WRITE(I,201)KX1,KX2,KY1,KY2,SKEW,DATUMCOUNT 201 FORMAT(' MIN ENCL RECT (PK): [',I3,':',I3,',',I3,':',I3 1,']',/,' SKEW (DELTA X/DELTA Y)=',F6.2,' # DATA=',F7.0) C C C [3] COMPUTE T19 AND MEAN OF PK COUNT=0.0 T19=0.0 AREA=0.0 AMEAN=0.0 C C NOTE INCRE. WINDOW FOR DO LOOPS KX1=KX1+1 KY1=KY1+1 KX2=KX2+1 KY2=KY2+1 C MEM=JBM IBYTE=JHGH DO 300 IY1=KY1,KY2 S CPAGE 3 S JMS TTYCTL S JMP \998 /GET OUT! C IY=IY1-1 C DO 300 IX1=KX1,KX2 IX=IX1-1 C C GET POINT CALL FETCH2D C C IF IZ=0 C THEN SKIP THIS POINT IF(IZ)301,300,301 C C C COMPUTE THIS POINT 301 DATA=IZ C C COMPUTE MEAN AREA=AREA+DATA COUNT=COUNT+1.0 C C T19=T19+ABS(FLOAT(IX-IY))*DATA 300 CONTINUE C C FIXUP T19 T19=0.5*T19/DATUMCOUNT C C FIX UP MEAN AMEAN=AREA/(COUNT*DATUMCOUNT) C C C [3.1] COMPUTE VARIANCE VARIANCE=0.0 DO 310 IY1=KY1,KY2 S CPAGE 3 S JMS TTYCTL S JMP \998 /GET OUT! C IY=IY1-1 C DO 310 IX1=KX1,KX2 IX=IX1-1 C C GET POINT CALL FETCH2D C C IF IZ=0 C THEN SKIP THIS POINT IF(IZ)311,310,311 C C C COMPUTE THIS POINT 311 DATA=FLOAT(IZ)/DATUMCOUNT DIFF=DATA-AMEAN VARIANCE=VARIANCE+(DIFF*DIFF) 310 CONTINUE C C FIXUP VARIANCE VARIANCE=VARIANCE/COUNT C C COMPUTE T15 STDDEV=SQRT(VARIANCE) T15=STDDEV/AMEAN C C C [4] PRINT RESULTS DO 320 I=1,3,2 320 WRITE(I,321)T15,STDDEV,AMEAN,T19 321 FORMAT(' T15 (COEF. VAR.)=',E10.3,/,' STDDEV (PK)=',E10.3, 1,', MEAN (PK)=',E10.3,/,' T19 (2ND DIAG MOM)=',E10.3) C C [4] RETURN S \998, RETRN JGSP2 C ************************************************************ C SUBROUTINE: T T Y C T L (INTERNAL) C ************************************************************ C S CPAGE 3 S RTTYC, JMP I TTYCTL S TTYCTL, 0000 /ENTRY C S KSF /ANYTHING TYPED S JMP NORMAL /NO, RETURN NORMALLY S KRB /GET TYPED CHARACTER S AND (0177 /TAKE CARE OF PARITY PROBLEMS S TAD (-17 /TEST FOR CTRL/O S SNA /SKIP IF NOT CTRL/O S JMP RTTYC /ABORT CALLING ROUTINE (ERROR RETURN) S TAD (-4 /TEST FOR CTRL/S [-17-4=-23(OCTAL)] S SZA CLA /SKIP IF CTRL/S S JMP NORMAL /NOT CTRL/O OR CTRL/S SO RETURN NORMALLY C S SLEEP,KSF /WAIT FOR CTRL/Q S JMP SLEEP /KEEP WAITING S KRB /READ CHARACTER S AND (0177 S TAD (-17 /IS IT A CTRL/O? S SNA /SKIP IF NOT S JMP RTTYC /YES, ABORT S TAD (-2 /TEST FOR CTRL/Q (-17-2=-21 OCTAL) S SZA CLA /SKIP IF SO S JMP SLEEP /NOPE, KEEP SLEEPING C S NORMAL,INC TTYCTL /INCREMENT RETURN ADDRESS FOR NORMAL RETURN S CLA /SAFETY VALVE S JMP RTTYC /RETURN C C *****PARAMETERS***** S PIH, \IH /POINTER J0=0 J45=0 J90=0 J135=0 END