C PROGRAM RUNFILTER.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 OCT 25, 1977 C OCT 21, 1977 C C C C INTRODUCTION C ------------ C RUNFILTER.FT IS A CHAINED PROGRAM USED WITH BMON2 C IT RECEIVES ITS ARGUMENTS FROM THE CD AREA AND THE IBM1,IHGH1 C IBM2,IHGH2, JBM, JHGH VARIABLES IN COMMON. COMMON IS RESTORED C FIRST BEFORE THE FUNCTION (TO BE INSERTED INTO THE BODY) IS C EVALUATED. AFTER THE FUNCTION IS PERFORMED, COMMON C IS SAVED AND BMON2 IS CHAINED BACK TO. C ANY COMPUTATIONS ARE DONE, THE ARGUMENTS ARE THEN CHECKED C C *_RUNFILTER,,(Opt delta),(Opt. Rmin,Rmax) - C compute the run length histogram of BMi into the BMON2 hist array C ignoring zero runs. A run is started/terminated if there C is a horizontal difference between |G(x,y) - G(x-1,y)| > delta. C The default for delta is 1. C C In addition, runs outside of the range of run lengths [Rmin:Rmax] C are ignored. The default range of runs is [1:255]. The /C switch C complements the sense of the run length sizing. C C The /L switch prints the run length distribution on the LPT:. C C If is specified, then pixels of a run just terminated C of length q are set to q. If /M is also specified, then the pixels C of the run are set to black (255). C OPDEFS C ------ S OPDEF TADI 1400 S OPDEF DCAI 3400 S OPDEF HPR 6320 S OPDEF HSR 6321 S OPDEF VPR 6322 S OPDEF VSR 6323 C S OPDEF HPL 6360 S OPDEF HSL 6361 S OPDEF VPL 6362 S OPDEF VSL 6363 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 C [1] INITIALIZATION C IF /L THEN FF ELSE SPACE J=ISW(12) S TAD \J S SZA CLA S TAD (0100 /FOR "1 " S TAD (6040 /"0 " S DCA \J C DO 800 K=1,3,2 WRITE(K,995)J 995 FORMAT(A2,'RUNFILTER: VER# 10/25/77 - 11:00AM') CALL DAYTIME(K) 800 CONTINUE C C C PRINT BMJ, BMI AND WINDOW S TAD (4040 /" 2 S DCA \K S TAD \JHGH S RAR /BIT 11==>LINK S CLA S TAD (1000 /"H@" S SZL /ADD "H" IF HIGH PART S DCA \K S CLA C C GET THE BM NAMES S TAD (4040 /" " S DCA \J S TAD \IHGH1 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 C VERIFY BM SPEC S JMS CKIN C@S JMS CKOUT C C C SETUP THE DEFAULT IDELTA TO 1 IF 0 ICNUM=MIN(255,MAX(ICNUM,1)) C C SETUP THE DEFAULT RUN LENGTH SIZING TO [1:255] IF ZEROS S TAD \ICNUM# /ICNUM(2) S DCA \I12 I12=MIN(255,MAX(I12,1)) ICNUM(2)=I12 C C I13_IF ICNUM(3) > 0 THEN ICNUM(3) ELSE 255; I13=ICNUM(3) S TAD \I13 S SNA S TAD (D255 S DCA \I13 ICNUM(3)=MIN(255,MAX(I13,I12)) C C C [2] PRINT HEADER DO 250 LSNEW=1,3,2 250 WRITE(LSNEW,251)JBM,K,IBM1,J,KX1-1,KX2-1,KY1-1,KY2-1 1,(ICNUM(K),K=1,3) 251 FORMAT(' BM',I1,A1,'< BM',I1,A1,', [',I3,':',I3,',',I3,':' 1,I3,'], DELTA=',I5,', RUN RNG=[',I5,':',I5,']') C C C [3] DO RUN LENGTH FILTER CALL RUNLTH C C C [999] RETURN GOTO 998 999 WRITE(1,996) 996 FORMAT('BAD BM SPEC') C C NORMAL EXIT 998 DO 987 K=1,3,2 CALL DAYTIME(K) 987 CONTINUE 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************** P A R A M E T E R S ************* S BMTEXT, TEXT /BM/ END