program mangepoint implicit none integer source(6000,8000), resul(6000,8000) integer ic, il, sigma, iblancg, iblancd, lgr, nbvois, sigmatot integer nblig, nbcol, posit, icc, ill, distance2, sigma2 character*90 ligne character*1 bout character*2 sigmachar character*30 nomfichier, nominput, nomoutput
sigma = 0 call getarg(1, nomfichier) call getarg(2, sigmachar) read (sigmachar, *) sigma if (sigma.eq.0) then print *, 'Sigma = 0 !' stop endif posit = len_trim(nomfichier) + 1 nominput = nomfichier(1:posit-1)//'.pbm' call system('copy '//nominput//' old'//nominput) nomoutput= nominput sigmatot = (2*sigma + 1)*(2*sigma + 1) ! sigma2 = sigma*(sigma + 1) print *, 'sigmatot = ', sigmatot
call system('convert -compress none '//nominput//nominput) open (unit=8, file=nominput) open (unit=9, file=nomoutput) read (8, '(a)') ligne ! P1 write (9, '(a)') ligne read (8, '(a)') ligne do while (index(ligne, '#').gt.0) read (8, '(a)') ligne enddo write (9, '(a)') ligne read (ligne, *) nbcol, nblig print *, nblig, nbcol ic = 1; il =1 do while ((il.lt.nblig).and.(ic.lt.nbcol)) read (8, '(a)', end=200) ligne lgr = len_trim(ligne) iblancg = 1 iblancd = 0 do while (iblancd.lt.lgr) iblancd = index(ligne, ' ') bout = ligne(iblancg:iblancd - 1) read (bout,*) source(ic,il) ic = ic + 1 ic = mod(ic, nbcol) if (ic.eq.0) il = il + 1 ligne(iblancd:iblancd) = '*' iblancg = iblancd + 1 enddo enddo print *, 'Lecture OK' goto 300
200 print *, 'Fin de fichier', ic, il 300 do ic = sigma, nbcol - sigma
do il = sigma, nblig - sigma nbvois = 0 resul(ic, il) = source(ic, il) do icc = ic - sigma, ic + sigma do ill = il - sigma, il + sigma distance2 = (icc - ic)*(icc - ic) + (ill - il)*(ill - il) if ((distance2.le.sigma2).and.(source(icc, + ill).eq.1)) nbvois = nbvois + 1 enddo enddo if (nbvois.lt..125*sigmatot) resul(ic, il) = 0 enddo enddo print *, 'Fin du traitement'
do il = 1, nblig ic = 1 do while (ic.le.nbcol) write (9,*) (resul(icc, il), icc=ic, min(ic+19, nbcol)) ic = ic + 20 enddo enddo close (unit=8) close (unit=9)
end