2013-04-04 24 views
5

Soru

Temizlemek istediğim derinlik bilgilerini gösteren bir görüntü dizisi var. Kabul edilebilir bir alternatifle doldurmak istediğim (0-255 aralığı için 25'in altındaki yoğunlukta değerler) (bu spesifik alana lokalize edilen ortalama bir değer iyi bir tahmin olabilir) bazı aykırı değerler vardır.Gri ​​ölçek görüntüsünden aykırı değerlerin kaldırılması

Bunu yapmanın basit bir yolu var mı? İstenmeyen değerleri NaN ile değiştiren bir medyan filtresi (10'luk filtre boyutu) kullanmayı denedim, ancak durumu daha da kötüleştirdi, bunun yerine bunları genel bir ortalama değerle değiştirerek geliştirdi.

Basic trial

Not;

Uygulanan solüsyon (şimdiye kadar)

Ben yaklaşık inpaint_nans okumadan önce (uygulanan çözüm önerdi ... Birisi zaten hızlı dalgacık yeniden kullanmak için bana önerdi, fakat nereden başlayacağını gerçekten bilemeyiz

  1. Orijinal görüntünün çoğaltılması; Geçersiz piksellerin genel ortalama değerle doldurulması;
  2. Bulanıklaştırma için dairesel bir ışın şeridi 10 kullanın;
  3. Ben noktadan 3.
  4. çalışması G den inpaint_nans katkı öneriliyor 10.
img2 = img;          
img2(img < .005) = mean(img(:));     
H = fspecial('disk',10);       
img3 = imfilter(img2,H,'symmetric');    
img4 = img;          
img4(img < .3) = img3(img < .3);     
filterSize = 10;         
padopt = {'zeros','indexed','symmetric'};   
IMG = medfilt2(img4, [1 1]*filterSize, padopt{p}); 

Second trial

cevap

7

boyutta bir medyan filtresi ne var orijinal görüntüdeki geçersiz değerler yerine MATLAB File Exchange - zaten NaN ile aykırı değerleri değiştirerek yaptığınız gibi başlayın ve buradan gitmek için bağlantıyı kullanın. olmayan NaN elemanlarını kullanan bir 2 boyutlu dizide

enterpolasyonu NaN elemanlarının: fonksiyon açıklamasından

. da, verilerin üçgenlenmesi kullanılmadığı için ekstrapolasyon yapabilir. Inpaint_nans, enterpolasyona, 'a, hıza ve gerekli belleğe karşı hassasiyette zorlamalar veren birkaç farklı yaklaşım sunar. Tüm , şu anda inpaint_nans'da bulunan yöntemler, seyrek doğrusal cebir ve PDE discretizasyonlarına dayanmaktadır. Özünde, bir PDE, sağlanan bilgi ile tutarlı olarak olarak çözülür.

Tekrar kullanılabilir kod için bir yuva!

+5

düşüncelerim aynen, sadece 20 saniye geç. +1 – bla

4

roifill adlı bir işlev kullanın. Bununla biraz uğraşmanız gerek. imdilate kullanmam gerekiyordu, çünkü sınırdan interpolasyon yapıyor.

Kodu:

testimage = imread('BAPz5.png'); 
testimage = double(rgb2gray(testimage)); 
testimage_filt = roifill(testimage,imdilate(testimage<100,true(4))); 
figure(1); 
subplot(1,2,1); 
imshow(testimage,[]); 
subplot(1,2,2); 
imshow(testimage_filt,[]); 

Çıktı:

enter image description here

1

sonrası cevap ama sadece kayıt için olduğu, [1], doğal şekiller temel ilkesine dayanan yazar, Yani, nesneler ikinci mertebe düzgünlüğü izler, en küçük kareler anlamında eğriliği en aza indiren boyama yöntemini önerir. Ayrıca code sunar. İyi şanslar.

[1] Α categoty Düzey 3 boyutlu nesne Veritabanı: kineckto Çalışma koymak (ICCV)

enter image description here

+0

Not: [sadece bağlantıya verilen cevaplar önerilmez] (http://meta.stackoverflow.com/tags/link-only-answers/info), SO cevapları bir çözüm arayışının son noktası olmalıdır (Yine de zamanla bayat eğilimi olan referanslardan başka bir duraklama). Lütfen bağlantıyı referans olarak tutarak, burada tek başına bir özet eklemeyi düşünün. – kleopatra

+0

Bu harika! Notunuz için teşekkürler ** Darkmoor **! Bir kâğıt tarafından desteklenen bir başkasının görüşünü almak her zaman güzeldir! – Atcold