C PROGRAM JGSPLOT.FT 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 30, 1977 /SET TO USE /1 C JAN 27, 1977 C C INTRODUCTION C ------------ C JGSPLOT.FT IS A CHAINED PROGRAM USED WITH BMON2 C IT RECEIVES ITS ARGUMENTS FROM THE CD AREA AND THE IBM1,IHGH1 C VARIABLES IN COMMON. THE ARGUMENTS ARE THEN CHECKED C AND THEN JOINT GRAY SCALE TEXTURE MEASURES ARE COMPUTED C ON THE IMPUT BMI1 IMAGE AND REPORTED ON THE TTY AND LPT. C THE JOINT GRAY SCALE STATISTICS ARE DISCUSSED C IN ROSENFELD AND KAK (1976) P421. C C _JGSPLOT,,(distance d in pixels) - Compute C the Joint Gray Scale (JGS) probability density C distributions, Pk(i,j), where k is an angle 0, 45, 90 C or 135 degrees. C Before the Pk(i,j) are computed, the histogram of the C entire image is acquired with a sampling of 5 in order C to normalize the gray values. Index i is the central C pixel gray value/2, The other index j is computed as C the gray value/2 of a pixel distance d away in C direction k. C After the Pk(i,j) are computed, they are ploted in the C output in four quadrants as (+i down, +j right): C --------------- C | P0 | P45 | C | P90 | P135 | C --------------- C The background is set to 75 to facilitate photographing C it. If /I is specified, then the background is set to 0 C and each occurance of a scatter point causes that pixel C to be incremented to a maximum of 255. C C If /1 then plot all JGS unscaled in then entire image. C C It /T then print some of Pressman's "T" statistics. C OPDEFS C ------ S OPDEF TADI 1400 S OPDEF DCAI 3400 C S OPDEF DISP1 6435 S OPDEF DISP2 6436 C C S OPDEF SWAB 7431 S OPDEF SWBA 7447 C S OPDEF MQA 7501 S OPDEF MQL 7421 S OPDEF KRS 6034 S OPDEF BSW 7002 C C C [1] INITIALIZATION WRITE(1,995) WRITE(3,995) 995 FORMAT('0 JGSPLOT 7/26/77 - 2:11PM') ET=TIMER(0) C C C GET THE SAMPLING DISTANCE ID=MAX(ICNUM,1) C C C C GET THE BM NAME S TAD (4040 /" " S DCA \I S TAD \IHGH1 S RAR /BIT 11==>LINK S CLA S TAD (1000 /"H@" S SZL /ADD "H" IF HIGH PART S DCA \I S CLA C C GET THE BM NAME S TAD (4040 /" " S DCA \J S TAD \JHGH S RAR /BIT 11==>LINK S CLA S TAD (1000 /"H@" S SZL /ADD "H" IF HIGH PART S DCA \J S CLA C C DO 250 INDEX=1,3,2 250 WRITE(INDEX,251)JBM,J,IBM1,I,KX1-1,KX2-1,KY1-1,KY2-1,ID 251 FORMAT(' BM',I1,A1,'<==BM',I1,A1,' [',I3,':',I3,' , ' 1,I3,':',I3,'], DISTANCE=',I3) C C C C C [2] VERIFY BM SPECS C CLEAR THE /L DUMP SWITCH ISW(12)=0 C S JMS CKIN S JMS CKOUT C@@S JMS CKIN2 C C NOTE: IF USING Pk(I,J) FOR CAL. NEED IT C ZERO NOT GRAY! C IF /T C THEN /I_TRUE IF(ISW(20))260,300,260 260 ISW(9)=1 C C C [3] COMPUTE THE SAMPLED (1) HISTOGRAM WITH NO OUTPUT BM 300 KOUTFILE=0 C MEM=IBM1 IBYTE=IHGH1 C C IF /1 THEN DO NOT NORMALIZE IF(ISW(26+2))400,301,400 301 ICNUM=1 IVAL=1 C C TAKE SAMPLE OVER ENTIRE BM LX1=KX1 LX2=KX2 LY1=KY1 LY2=KY2 C C SET TO FULL FRAME KX1=1 KX2=256 KY1=1 KY2=256 C CALL BMAX3 C C RESTORE /U FRAME KX1=LX1 KX2=LX2 KY1=LY1 KY2=LY2 C ICNUM=ID C C C [4] PERFORM THE FUNCTION 400 CALL JGSP1 C C C [999] RETURN GOTO 998 999 WRITE(1,996) 996 FORMAT('BAD BM SPECIFICATION!') 998 ET=TIMER(2) C C CALL CHAIN('BMON2') C*************************************************** C *PROCEDURE C K O U T C****************************************************** C C C CHECK WHETHER THE OUTPUT BM SPEC IS LEGAL ELSE GOTO 999. S CPAGE 3 SRCKOUT, JMP I CKOUT S CKOUT, 0 /ENTRY C C [1] TEST IF KOUTFILE="BM" S TAD \KOUTFILE S CIA S TAD BMTEXT S SZA CLA S JMP \999 /FAILED C C [2] TEST IF (KOUTFILE(2) LAND '7700)=DIGIT S TAD \KOUTFILE# S BSW S AND (0077 S TAD (-60 /"0" S SPA S JMP \999 /NO, FAILED S TAD (-D8 /"7" TEST S SMA CLA S JMP \999 /FAILED S JMP RCKOUT /OK. C C C*************************************************** C *PROCEDURE C K I N C****************************************************** C C C CHECK WHETHER THE INPUT BM SPEC IS LEGAL ELSE GOTO 999. S CPAGE 3 SRCKIN, JMP I CKIN S CKIN, 0 /ENTRY C C [1] TEST IF BMI1="BM" S TAD \SFILE S CIA S TAD BMTEXT S SZA CLA S JMP \999 /FAILED C C [2] TEST IF (BMI1(2) LAND '7700)=DIGIT S TAD \SFILE# S BSW S AND (0077 S TAD (-60 /"0" S SPA S JMP \999 /NO, FAILED S TAD (-D8 /"7" TEST S SMA CLA S JMP \999 /FAILED S JMP RCKIN /OK. C C C*************************************************** C *PROCEDURE C K I N 2 C****************************************************** C C C CHECK WHETHER THE INPUT BM SPEC IS LEGAL ELSE GOTO 999. S CPAGE 3 SRCKIN2, JMP I CKIN2 S CKIN2, 0 /ENTRY C C [1] CHECK FIRST IBM1 SPEC S JMS CKIN C C C [2] TEST IF BMI2="BM" S TAD \SEXT S CIA S TAD BMTEXT S SZA CLA S JMP \999 /FAILED C C [3] TEST IF (BMI2((6) LAND '7700)=DIGIT S TAD \SEXT# S BSW S AND (0077 S TAD (-60 /"0" S SPA S JMP \999 /NO, FAILED S TAD (-D8 /"7" TEST S SMA CLA S JMP \999 /FAILED S JMP RCKIN2 /OK. C C C************** P A R A M E T E R S ************* S BMTEXT, TEXT /BM/ END