Menu |
AnnexCode source de l’algorithme pour obtenir les 50 pixels les plus sombres des images obtenues du radiomètre c programme convertit un fichier fits en pgm c c c Copyright (C) 2011 Martin Aube c c This program is free software: you can redistribute it and/or modify c it under the terms of the GNU General Public License as published by c the Free Software Foundation, either version 3 of the License, or c (at your option) any later version. c c This program is distributed in the hope that it will be useful, c but WITHOUT ANY WARRANTY; without even the implied warranty of c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the c GNU General Public License for more details. c c You should have received a copy of the GNU General Public License c along with this program. If not, see <http://www.gnu.org/licenses/>. c c Contact: martin.aube@cegepsherbrooke.qc.ca c real lambda,out(400000),vect(400000),quad,moy real x(400000),XSMOM4,y(15000) integer image(765,510),imgout(765,510),moya,moyo integer histo(65535),h,s,l,m,fenetre,nbon,n,Im,nbh integer i,j,pos,longueur,nbdata,minimum,k,IWRITE do i=1,765 do j=1,510 image(i,j)=0 imgout(i,j)=0 enddo enddo n=0 open(unit=1,file='imagetxt.tmp',status='unknown') longueur=764+766*510 read(1,*) (vect(i),i=1,longueur) close(unit=1) minimum=65536 moya=0 do h=1,65535 histo(h)=0 enddo print*,'remplissage de la matrice et de l histogramme' k=0 do i=1,765 do j=1,510 k=k+1 pos=i+766*j c out(n)=out(n)+vect(pos) image(i,j)=vect(pos) x(k)=vect(pos) if (k.le.15000) y(k)=vect(pos) if ((image(i,j).lt.minimum).and.(image(i,j).ne.0)) then minimum=image(i,j) endif moya=moya+image(i,j) histo(image(i,j))=histo(image(i,j))+1 enddo enddo c calcul du kurtosis ( coefficient d applatissement c IWRITE=1 c call STMOM4(x,k,IWRITE,XSMOM4) c print*,'kurtosis=',XSMOM4 c calcul du spectre spatial (fourier) c call FOURIE(y,15000) c ecriture du premier histogramme open(unit=4,file='histo.initial',status='unknown') do h=1,65535 write(4,*) h,histo(h) enddo close(unit=4) c nbon est le nombre de donnees a moyenner fenetre=10 do h=1,65535 if (histo(h).gt.0) then s=0 do l=h,h+fenetre s=s+histo(l) enddo if (s.eq.histo(h)) then do m=h-100,h histo(m)=0 enddo endif endif enddo do nbon=50,50 n=0 c nbon=500 h=0 nbh=0 c nbh est l addition des valeures poderees par leur frequence do while (n.le.nbon) h=h+1 if (histo(h).ne.0) then n=n+histo(h) nbh=nbh+histo(h)*h do i=1,765 do j=1,510 if (image(i,j).eq.h) then imgout(i,j)=image(i,j) c print*,h,i,j endif enddo enddo endif enddo moy=real(nbh)/real(n) print*,moy, nbon enddo c ecriture du nouveau histogramme open(unit=3,file='histo.final',status='unknown') do h=1,65535 write(3,*) h,histo(h) enddo close(unit=3) nbdata=765*510 print*,'ecriture des pgm' open(unit=2,file='image.pgm',status='unknown') write(2,100) c write(2,200) int(1.5*moy) write(2,200) write(2,*) ((image(i,j),i=1,765),j=1,510) close(unit=2) open(unit=1,file='image1.pgm',status='unknown') write(1,100) c write(1,200) int(1.*moy) write(1,200) write(1,*) ((imgout(i,j),i=1,765),j=1,510) close(unit=1) 100 format('P2') c 200 format('765 510 ',I4 ) 200 format('765 510 65535' ) stop end |