Garfield
YZF Admin
Görüntü işleme ile gürültü azaltmak için önce gürültünün türünü belirleyin, ardından uygun filtreyi düşük kuvvetle uygulayıp çıktıyı özgün görüntüyle karşılaştırın. Genel amaçlı renkli fotoğraflarda OpenCV’nin
Bu seçenekler arasında tek bir “en iyi” filtre yoktur. Gürültü tekil noktalar biçimindeyse medyan, kenarların korunması önemliyse bilateral, fotoğraf genelinde renk ve parlaklık benekleri varsa non-local means daha uygun bir başlangıçtır. Filtre uygulandıktan sonra görüntü daha temiz görünse bile bu, kaybolan ayrıntıların geri geldiği anlamına gelmez; gürültüyle birlikte gerçek bilgi de silinmiş olabilir.
Buradaki sonuçta renk karşılaştırması yapılamayacağı için gürültü ve ayrıntı değerlendirmesi parlaklık geçişleri, çizgiler ve kenarlar üzerinden yapılır. Görüntüdeki ince çizgiler kopuyor veya yazılar okunmaz hâle geliyorsa filtre fazla güçlüdür.
Referans görüntü yoksa değerlendirmeyi aynı görüntünün farklı bölgelerinde yapın: düz renkli alanlarda beneklerin azalması, kenarlarda keskinliğin korunması ve küçük ayrıntıların okunabilir kalması birlikte sağlanmalıdır. Gürültü azalmış ancak görüntü yapay biçimde pürüzsüzleşmişse filtre gücünü düşürün. Gürültü hâlâ belirginse önce gürültünün türünü yeniden değerlendirin; tekil noktalar için medyan filtreyi, kenar koruma ihtiyacı için bilateral filtreyi deneyin. Gürültü azaltma, aşırı pozlanmış veya hareket bulanıklığı oluşmuş görüntüde kaybolan bilgiyi geri getirmez.
fastNlMeansDenoisingColored() yöntemiyle başlayabilir; siyah-beyaz görüntülerde fastNlMeansDenoising() kullanabilirsiniz. Sonuçta rastgele noktalar ve renk lekeleri azalır, ancak filtre gücü fazla artırılırsa ince ayrıntılar ve kenarlar da silinir.Gürültü türünü belirleme
Gürültü, görüntüdeki gerçek nesneye ait olmayan parlaklık veya renk değişimleridir. Düşük ışıkta çekilmiş fotoğraflarda ince renk benekleri, sensör kaynaklı rastgele noktalar veya sıkıştırmadan doğan bloklaşmalar görülebilir. Her tür gürültü için aynı filtre iyi sonuç vermez.| Yöntem | Uygun olduğu durum | Dikkat edilmesi gereken |
|---|---|---|
| Ortalama veya Gauss bulanıklaştırma | Hafif ve genel gürültü | Kenarları yumuşatabilir |
| Medyan filtresi | Tek tek parlak veya koyu noktalar | Pencere büyüdükçe küçük ayrıntılar kaybolur |
| Bilateral filtre | Kenarları koruyarak yumuşatma | Yoğun gürültüde yetersiz kalabilir |
| Non-local means | Renkli fotoğraflarda ayrıntıyı koruyarak gürültü azaltma | Daha fazla işlem süresi ve parametre ayarı gerektirebilir |
OpenCV ile renkli görüntüde gürültü azaltma
Örnek için Python ve OpenCV’nin kurulu olduğunu, çalışılan klasördegiris.jpg adlı renkli bir görüntü bulunduğunu varsayın. Aşağıdaki örnek görüntüyü okur, gürültüyü azaltır ve sonucu cikis.jpg olarak kaydeder.- Girdi dosyasını hazırlayın.
giris.jpgdosyasını Python dosyanızla aynı klasöre koyun. Dosya okunamazsa programın çalıştığı klasörü ve dosya uzantısını kontrol edin. - Filtreyi uygulayın. Aşağıdaki kodda
hvehColordeğerleri filtre gücünü belirler; başlangıçta orta düzey değerlerle ilerleyip ayrıntı kaybını gözlemleyin.
Python:import cv2 kaynak = cv2.imread("giris.jpg") if kaynak is None: raise FileNotFoundError("giris.jpg okunamadı.") sonuc = cv2.fastNlMeansDenoisingColored( kaynak, None, h=10, hColor=10, templateWindowSize=7, searchWindowSize=21 ) if not cv2.imwrite("cikis.jpg", sonuc): raise OSError("cikis.jpg kaydedilemedi.") print("Gürültü azaltılmış görüntü cikis.jpg olarak kaydedildi.") - Programı çalıştırın. Kod çalıştığında aynı klasörde
cikis.jpgoluşur.FileNotFoundErroralırsanız giriş dosyası yolunu düzeltin; kaydetme hatasında hedef klasöre yazma iznini ve dosya yolunu kontrol edin. - Çıktıyı özgün görüntüyle karşılaştırın. Aynı bölgedeki ince çizgileri, saç veya kumaş dokusunu ve nesne kenarlarını büyüterek inceleyin. Benekler azalmış fakat ayrıntılar hâlâ seçilebiliyorsa ayar kullanılabilir durumdadır.
Filtre gücü nasıl ayarlanır?
h parlaklık gürültüsüne, hColor ise renk gürültüsüne uygulanan yumuşatma etkisini artırır. Değerleri yükseltmek daha temiz bir görüntü üretebilir; buna karşılık yüzeyleri plastik gibi gösterebilir ve küçük ayrıntıları yok edebilir. Önce yalnızca bir değeri küçük miktarda değiştirip çıktıyı yeniden üretin. İki değeri aynı anda değiştirirseniz hangi ayarın sonucu etkilediğini ayırt etmek zorlaşır.templateWindowSize ve searchWindowSize değerleri yöntemin görüntüde benzer bölgeleri ararken kullandığı alanları etkiler. Bu değerleri büyütmek her zaman daha iyi sonuç vermez; işlem süresini artırabilir ve benzer olmayan bölgelerin karşılaştırılmasına yol açabilir. Küçük bir görüntü parçasında ayrıntı kaybı görülüyorsa önce h ve hColor değerlerini azaltmak daha güvenli bir ilk adımdır.Siyah-beyaz görüntüde uygulama
Siyah-beyaz bir görüntü için renk kanallarına yönelik yöntemi kullanmak yerinefastNlMeansDenoising() çağrısı yapılabilir:
Python:
import cv2
kaynak = cv2.imread("gri.jpg", cv2.IMREAD_GRAYSCALE)
if kaynak is None:
raise FileNotFoundError("gri.jpg okunamadı.")
sonuc = cv2.fastNlMeansDenoising(
kaynak,
None,
h=10,
templateWindowSize=7,
searchWindowSize=21
)
if not cv2.imwrite("gri_cikis.jpg", sonuc):
raise OSError("gri_cikis.jpg kaydedilemedi.")
print("Siyah-beyaz sonuç gri_cikis.jpg olarak kaydedildi.")
Buradaki sonuçta renk karşılaştırması yapılamayacağı için gürültü ve ayrıntı değerlendirmesi parlaklık geçişleri, çizgiler ve kenarlar üzerinden yapılır. Görüntüdeki ince çizgiler kopuyor veya yazılar okunmaz hâle geliyorsa filtre fazla güçlüdür.
Sonucu ölçerek değerlendirme
Elinizde gürültüsüz olması beklenen bir referans görüntü varsa iki görüntüyü PSNR veya SSIM gibi ölçütlerle karşılaştırabilirsiniz. Ancak daha yüksek bir ölçüm değeri her zaman insan gözüne daha iyi görünen sonuç anlamına gelmez; özellikle metin, yüz ve ince doku içeren görüntülerde görsel inceleme de gerekir.Referans görüntü yoksa değerlendirmeyi aynı görüntünün farklı bölgelerinde yapın: düz renkli alanlarda beneklerin azalması, kenarlarda keskinliğin korunması ve küçük ayrıntıların okunabilir kalması birlikte sağlanmalıdır. Gürültü azalmış ancak görüntü yapay biçimde pürüzsüzleşmişse filtre gücünü düşürün. Gürültü hâlâ belirginse önce gürültünün türünü yeniden değerlendirin; tekil noktalar için medyan filtreyi, kenar koruma ihtiyacı için bilateral filtreyi deneyin. Gürültü azaltma, aşırı pozlanmış veya hareket bulanıklığı oluşmuş görüntüde kaybolan bilgiyi geri getirmez.