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_data- min(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_data- min(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?????