Uzaktan Algilama - Destriping Uygulamasi
- Sevdanur GENC

- Sep 30, 2013
- 2 min read
Bu makalede IDL Programlama dili kullanilarak uzaktan algilama ile elde edilmis bir uydu goruntusundeki dikey eksen cizgilerindeki bozukluklari Destriping yontemi ile gideriyor olacagiz.
Destriping Uygulamasi Hakkinda On Bilgi
Uygulamada gerceklesmesi istenen; Destriping Multisensor Imagery With Moment Matching isimli akademik makaleden yola cikarak elimizdeki 200 X 200 boyutlarindaki, 12 Bit Radyometrik ve 30m cozunurlugune sahip Hyperspektral iki bantli bir goruntu hakkindaki problemi IDL Programlama dilini kullanarak cozmek istiyoruz. Ilk bantli goruntu dikey cizgiler halinde bozulmustur. Ikinci bandi ilk bant goruntusu icin referans alarak goruntuyu duzenleyecegiz.
Uygulamaya Ait Dosyalarin Sisteme Aktarilmasi
Uygulamayi Exelis dizini altinda bulunan IDL82 dizinine ait orneklerin bulundugu examples dizine aktarmis bulunmaktayim. Uygumala icersinde de uygu goruntulerine ait olan tif dosyalarini yine bu filepath uzerinden sisteme okutturmus oldum.
ImageWithVerticalLine isimli tif dosyasi, Uydu goruntusu uzerindeki bulunan dikey cizgilerin bulundugu dosyadir. Uygulama icerisinde buna referans olarak gosterecegimiz tif dosyasini ise ReferanceImage olarak isimlendirdim.
IDL Programlama dili ile yazmis oldugum ve ayni zamanda pro olarak calistirdigim dosya ismi ise remoteSensing.pro 'dur.
Uygulamaya Ait IDL Programindaki Kodlari
pro remoteSensing ImageWithVerticalLine=READ_TIFF(FILEPATH('ImageWithVerticalLine.tif',$ SUBDIRECTORY=<'examples','remotesensing'>
)) HELP, ImageWithVerticalLine ReferanceImage=READ_TIFF(FILEPATH('ReferanceImage.tif',$ SUBDIRECTORY=<'examples','remotesensing'>
)) HELP, ReferanceImage StandartSapma_ImageWithVerticalLine=STDDEV(ImageWithVerticalLine) print,"VerticalLine goruntusundeki standart sapma sonucu ; ", StandartSapma_ImageWithVerticalLine StandartSapma_ReferanceImage=STDDEV(ReferanceImage) print,"Referance goruntusundeki standart sapma sonucu ; ", StandartSapma_ReferanceImage Varyans_ImageWithVerticalLine=VARIANCE(ImageWithVerticalLine) print,"VerticalLine goruntusundeki varyans sonucu ; ", Varyans_ImageWithVerticalLine Varyans_ReferanceImage=VARIANCE(ReferanceImage) print,"Referance goruntusundeki varyans sonucu ; ",Varyans_ReferanceImage Ortalama_ImageWithVerticalLine=MEAN(ImageWithVerticalLine) print,"VerticalLine goruntusundeki ortalama degeri ; ", Ortalama_ImageWithVerticalLine Ortalama_ReferanceImage=MEAN(ReferanceImage) print,"Referance goruntusundeki ortalama degeri ; ", Ortalama_ReferanceImage ImageSutunDizi=MAKE_ARRAY(1,200) NoiselessImage=MAKE_ARRAY(200,200) FOR i=0,199 DO BEGIN FOR j=0,199 DO BEGIN ImageSutunDizi<0,j>
=ImageWithVerticalLine
ENDFOR FOR k=0,199 DO BEGIN SutunOrtalamasi=MEAN(ImageSutunDizi) SutunStandartSapmasi=STDDEV(ImageSutunDizi) Sonuc=Ortalama_ImageWithVerticalLine-( (StandartSapma_ImageWithVerticalLine/SutunStandartSapmasi)*SutunOrtalamasi) NoiselessImage
=(StandartSapma_ImageWithVerticalLine/SutunStandartSapmasi)*ImageSutunDizi<0,k>
+Sonuc ENDFOR ENDFOR WindowSize=size(ImageWithVerticalLine,/dimensions) window,/free,xsize=WindowSize<0>
,ysize=WindowSize<1>
loadct,0 TVSCL,ImageWithVerticalLine WindowSize=size(ImageWithVerticalLine,/dimensions) window,/free,xsize=WindowSize<0>
,ysize=WindowSize<1>
loadct,0 TVSCL,ReferanceImage WindowSize=size(ImageWithVerticalLine,/dimensions) window,/free,xsize=WindowSize<0>
,ysize=WindowSize<1>
loadct,0
TVSCL,NoiselessImage
TotalCorrelateBefore=CORRELATE(ReferanceImage,ImageWithVerticalLine)
print,"Korelasyon islemi oncesinde ; ",TotalCorrelateBefore
TotalCorrelateAfter=CORRELATE(ReferanceImage,NoiselessImage)
print,"Korelasyon islemi sonrasinda ; ",TotalCorrelateAfter
END
Uygulamada Yer Alan IDL Kodlarinin Aciklamasi
Uygulamada kullanacagim uydu goruntulerini sisteme tanitabilmem icin oncelikle FilePath ve Read_Tiff metodlarini kullanarak tif uzantisindaki goruntuleri degiskenlere atayim, vermis oldugum filepath'leri dogruladim.
Ardindan sisteme tanitmis oldugum uydu goruntulerinin STDDEV metodu ile standart sapmalarini hesaplattirip degiskenlere atiyor ve bununla birlikte ekrana sonuclarini print komutu ile yazdiriyorum. Uydu goruntulerinin varyanslarini hesaplayabilmek icin VARIANCE metodunu kullaniyorum, sonucunu bir degiskene attiktan sonra ekrana sonuclarini print metodu ile yazdiriyorum. Destriping isleminin hazirliklarini sonlandirabilmek adina goruntulerin ortalamalarini hesaplattiriyor, sonucu degiskene atiyor ve yine ekrana yazdiriyorum.
Uydu goruntumuz Dikey eksende bozukluga ugradigi icin goruntu uzerinde calisirken taramamizi sutunlar uzerinde yapiyor olmamiz gerekiyor. Bu sebepten, goruntumuzun satir ve sutunlari uzerinde islem yaparken her bir goruntu icin 1 sutuna 200 satir seklinde diziler olusturdum. Gurultulu uydu goruntusunundeki dikey cizgileri yok ettikten sonra yeni bir matris boyutuna bu goruntuyu atamamiz gerekiyor. Bunun icinde 200 satir ve 200 sutunluk bir dizi olusturdum.
Gurultulu goruntudeki sutunlardaki piksel degerlerini olusturmus oldugum diziye atiyorum. Atamis oldugum bu degerler ile ortalamayi hesapladim. Yine ayni sekilde sutunlarin standart sapmasini hesaplayip tum resmin standart sapmasina oranliyorum. Ayni sekilde tum resmin ortalamasini hesaplayip goruntunun sutun ortalamasina oranliyorum. Bu iki onemli sonuc sayesinde piksellerimizin yeni degerlerini makale icerisinde verilen Radiance = (DN X Gain) + Offset formulu uzerinde yerlerine yerlestirerek hesaplamayi sonlandirdim. Olusan yeni pikselleri 200 satir 200 sutunluk olusturmus oldugum temiz bir matrise atadiktan sonra goruntulerin tumunun Window metodu yardimiyla ekrana ciktisini aldirdim. Son olarakta elimizde var olan gurultulu ve gurultusuz uydu goruntulerinin korelasyonlari hesaplanip birer degiskene atilarak, sonuclarini ekrana cikti olarak yazdirdim.
Uygulamaya Ait Ekran Goruntuleri
Duzeltilmis goruntulere ait sonuclar;
Keyifli Calismalar Dilerim.



Comments