• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Görüntü işleme ile gürültü azaltma nasıl yapılır?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
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 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öntemUygun olduğu durumDikkat edilmesi gereken
Ortalama veya Gauss bulanıklaştırmaHafif ve genel gürültüKenarları yumuşatabilir
Medyan filtresiTek tek parlak veya koyu noktalarPencere büyüdükçe küçük ayrıntılar kaybolur
Bilateral filtreKenarları koruyarak yumuşatmaYoğun gürültüde yetersiz kalabilir
Non-local meansRenkli fotoğraflarda ayrıntıyı koruyarak gürültü azaltmaDaha fazla işlem süresi ve parametre ayarı gerektirebilir
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.

OpenCV ile renkli görüntüde gürültü azaltma​

Örnek için Python ve OpenCV’nin kurulu olduğunu, çalışılan klasörde giris.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.
  1. Girdi dosyasını hazırlayın. giris.jpg dosyasını Python dosyanızla aynı klasöre koyun. Dosya okunamazsa programın çalıştığı klasörü ve dosya uzantısını kontrol edin.
  2. Filtreyi uygulayın. Aşağıdaki kodda h ve hColor değ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.")
  3. Programı çalıştırın. Kod çalıştığında aynı klasörde cikis.jpg oluşur. FileNotFoundError alırsanız giriş dosyası yolunu düzeltin; kaydetme hatasında hedef klasöre yazma iznini ve dosya yolunu kontrol edin.
  4. Çı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 yerine fastNlMeansDenoising() ç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.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst