Hiperspektral Görüntülerde Öznitelik Çıkarımı
Transkript
Hiperspektral Görüntülerde Öznitelik Çıkarımı
Uzaktan Algılama Teknolojileri Ders 10 – Hiperspektral Görüntülerde Öznitelik Çıkarımı ve Boyut Azaltımı Alp Ertürk alp.erturk@kocaeli.edu.tr Öznitelik Çıkarımı • Veriden ayırt edici yapıda nitelikler çıkarma işlemidir • Bu nitelikler, takip eden öğrenme ve sınıflandırma gibi işlevlerde hız ve başarım kazancı sağlar • Öznitelik çıkarımı ile büyük boyuttaki veri daha az sayıdaki veya daha düşük boyuttaki öznitelikler ile ifade edilebilir • Bu yüzden öznitelik çıkarımı boyut azaltımı ile yakın ilişkilidir • Büyük boyutlu ve fazla bilgi içeren hiperspektral verilerde öznitelik çıkarımı ve boyut azaltımı yüksek önem taşımaktadır Öznitelik Çıkarımı • Başarılı bir öznitelik çıkarımı aşağıdaki özellikleri sağlamalıdır: • Tekrarlanabilirlik: Geometrik ve fotometrik dönüşümlere rağmen aynı özniteliğin tespit edilebilmesi • Ayırt Edicilik (İng: Saliency): Her özniteliğin birbirinden ayırt edilebilir bir tanımlaması olması • Verimlilik: Öznitelik sayısının piksel sayısından çok daha az olması • Yerellik: Bir özniteliğin görüntünün göreceli olarak küçük bir alanını kaplaması ve oklüzyon vb. etkilere karşı gürbüz olması Öznitelik Çıkarımı • Uygulamaya göre yüksek başarım sağlayacak özniteliğin yapısı değişecektir • Örneğin renk bilgisi avantajlı da yanıltıcı da olabilir • Bu nedenle, ya direkt uygulamaya yönelik öznitelikler çıkarılır veya daha genel olarak anlamlı olabilecek çok sayıda öznitelik çıkarılarak bir arada kullanılır Bant Seçimi / Bant Çıkarımı • Bant seçimi (band selection) ve bant çıkarımı (band extraction) yaklaşımları birbirinin yerine kullanılabilen ancak aynı işlevi yerine getirmeyen yaklaşımlardır • Bant seçimi yaklaşımlarında, hiperspektral verinin bazı spektral bantları seçilerek alınır, diğer spektral bantlar ise atılır veya ihmal edilir. • Seçilen bantlar ne kadar çok bilgi verici veya istenen sonraki işlem için ne kadar önemli / anlamlıysa, o kadar başarılı bant seçimi gerçekleştirilmiş olur. • Aynı şekilde atılan / ihmal edilen bantların da önemsiz / anlamsız veya yüksek gürültülü olması amaçlanır. Bant Seçimi / Bant Çıkarımı • Bant çıkarımında ise hiperspektral veriden yeni spektral “bant”lar elde edilir • Bu bantlar orijinal bantlardan farklıdır ve daha az sayıda olmaları ve daha çok veya anlamlı bilgi içermeleri amaçlanır • İki yaklaşım grubu için de çok sayıda yöntem bulunmaktadır. PCA • Temel bileşenler analizi (Principal Component Analysis - PCA) • PCA, N spektral bantta yer alan bilgiyi N’den az sayıda banda “sıkıştırır” • Bu “sıkıştırma”, kovaryans (ortak-ilinti) en fazla ve artıklık / fazlalık en az olacak şekilde gerçekleştirilir • PCA, bir öznitelik / bant çıkarma yaklaşımıdır ve boyut azaltımı sağlar PCA • PCA şu dört aşamadan oluşur • Orijinal veri uzayında ortalama vektörü bulunur • Orijinal veri uzayında kovaryans matrisi hesaplanır • Özdeğerler ve özvektörler elde edilir • Özvektörler kullanılarak yeni uzaya geçilir PCA • Gözlem vektörleri (piksel vektörleri): • Ortalama vektörü: • Kovaryans matrisi: • Özdeğer ayrıştırması: • Temel bileşen dönüşümü: PCA • Dönüşüm sonunda yeni spektral bantlardan ilk belirli bir tanesini alınarak diğer bantlar ihmal edilir. • Bu sayede bant çıkarımı ve boyut azaltımı gerçekleştirilmiş olur • Bu sayı kullanıcı tarafından belirlenebileceği gibi, daha gürbüz bir yaklaşım özdeğerlerin kümülatif toplamının varyansı ile bağıntılıdır. PCA %% Read the Indian Pine hyperspectral data load('C:\Users\Alp\Downloads\Indian_pines_corrected.mat'); % Read the Indian Pine data hyper_data = indian_pines_corrected; hyper_data = (hyper_datamin(min(min(hyper_data))))/(max(max(max(hyper_data)))min(min(min(hyper_data)))); [spat1,spat2,spec] = size(hyper_data); hyper_vector = zeros(spec,spat1*spat2); for b = 1:1:spec hyper_vector(b,:) = reshape(hyper_data(:,:,b),1,spat1*spat2); end PCA %% PCA temp = hyper_vector; [M,N] = size(temp); temp = temp - repmat(mean(temp,2),1,N); covariance = (1/(N-1))*(temp*temp'); [cov_eigvec, cov_eigval] = eig(covariance); cov_eigval = diag(cov_eigval); [junk, rindices] = sort(-1*cov_eigval); cov_eigval = cov_eigval(rindices); cov_eigvec = cov_eigvec(:,rindices); final = cov_eigvec' * temp; disp('PCA completed'); PCA for b = 1:1:spec pca_data(:,:,b) = reshape(final(b,:),spat1,spat2); end %% Original bands and PCA figure; for i = 1:1:spec hold on; imshow(hyper_data(:,:,i),[]); title(['Original band, number ' num2str(i)]); pause(0.5); end PCA figure; subplot(1,3,1); imshow(hyper_data(:,:,[1 2 3])); subplot(1,3,2); imshow(hyper_data(:,:,[30 20 12])); subplot(1,3,3); imshow(pca_data(:,:,[1 2 3])); %% Plot the proportion of variance: figure; axis([0 200 0 1]); for l=1:1:length(cov_eigval) Proportion_of_variance=sum(cov_eigval(1:l))/sum(cov_eigval); hold on; plot(l,Proportion_of_variance,'*-'); end PCA Example: Indian Pines • Some original bands: (#10 , #30, #50) • First three spectral bands: (#1 , #2, #3) PCA Example: Indian Pines • First three spectral bands after PCA: PCA Example: Indian Pines • RGB of original spectral bands #30, #20, #12 • RGB of PCA bands #1, #2, #3 PCA • Pavia University verisi için kodun ilk kısmı şu şekilde değiştirilmeli: load('C:\Users\Alp\Downloads\PaviaU.mat') hyper_data = paviaU; hyper_data = (hyper_datamin(min(min(hyper_data))))/(max(max(max(hyper_data)))min(min(min(hyper_data)))); [spat1,spat2,spec] = size(hyper_data); hyper_vector = zeros(spec,spat1*spat2); for b = 1:1:spec hyper_vector(b,:) = reshape(hyper_data(:,:,b),1,spat1*spat2); end PCA Example: Pavia University • Some original bands: (#10 , #30, #50) PCA Example: Indian Pines • First three spectral bands after PCA: PCA Example: Pavia University • RGB of original spectral bands #45, #30, #10 PCA Example: Pavia University • RGB of PCA bands #1, #2, #3 PCA • Not: Indian Pines ve Pavia University hiperspektral verileri şu adresten indirilebilir: http://www.ehu.es/ccwintco/index.php?title=Hyperspectral_Remote_Sensing _Scenes&redirect=no Sorular ? ? ? ? ?