Büküm matrisine dayalı grafik filtreler. Görüntü filtrelemenin genel kavramları

  • 28.06.2019

Görüntü iyileştirmeye yönelik birçok yaklaşım iki kategoriye ayrılır: uzamsal alan işleme teknikleri (uzaysal teknikler) ve frekans alanı işleme teknikleri (frekans alanı teknikleri). Uzamsal alan, görüntüyü oluşturan piksellerin koleksiyonunu ifade eder. Uzamsal alandaki ön işleme işlevi şu şekilde yazılır:

nerede F(x, y) - giriş resmi,

G(x, y) - çıktı (işlenmiş) görüntü,

H- fonksiyon operatörü F bazı bölgede tanımlanmış ( x, y).

Bu tür işlemler genel sınıfa aittir. bitişik elemanlar üzerinde işlemler... Bu işlemler ana araçlardır. düşük seviyeli görüntü işleme veya uzaysal görüntü işleme.

Noktanın komşuluğunu belirlemede temel yaklaşım ( x, y) noktasında ortalanmış görüntünün bir bölümünün kare veya dikdörtgen alanının kullanılmasıdır ( x, y). Görüntünün bu bölümünün merkezi, örneğin sol üst köşeden başlayarak pikselden piksele hareket eder. Ayrıca, elde etmek için G(x, y) operatörü her pozisyon için uygulanır ( x, y). Bazen diğer komşuluk şekilleri (daire gibi) kullanılırken, uygulama kolaylığı nedeniyle kare şekiller tercih edilir.

En yaygın olarak kullanılan uzamsal etki alanı yöntemlerinden biri, filtrelerin (kıvrım maskeleri, şablonlar, pencereler) kullanımına dayanmaktadır. Tipik olarak, bir filtre maskesi, katsayıları belirli bir görüntü özelliğini algılayacak şekilde seçilen küçük (örneğin, boyut 3 * 3) iki boyutlu bir sistemdir (Şekil 1.5, a).

Pirinç. 1.5: a - filtre maskesi; b - filtre maskesi katsayıları

miktarlar ise w 1 ,w 2 ,…,w 9 katsayılardır, piksel maskeleridir ( x, y) ve sekiz komşusu (Şekil 1.5, b), daha sonra algoritma 3 * 3 nokta komşuluğu üzerinde aşağıdaki işlemi gerçekleştirerek temsil edilebilir. (x, y) :

Geniş anlamda, görüntü filtreleme görevi, prosedürün girişine bir raster görüntünün beslendiği ve çıktıda bir raster görüntünün oluşturulduğu herhangi bir görüntü işleme prosedürü olarak anlaşılmaktadır. Bununla birlikte, daha sıklıkla "filtreleme" terimi, sözde sıkışma filtreleme... Gürültü filtrelemenin temel amacı, görüntülerin belirli bir uygulama açısından sonucun daha uygun olacağı şekilde işlenmesidir. Genel durumda, bir ayırt edilebilir hat filtreleri(anti-aliasing filtreleri, kontrast arttırıcı filtreler, fark filtreleri) ve doğrusal olmayan filtreler(ortanca filtre).

İşte en yaygın filtreleme yöntemlerinin kısa bir açıklaması.

Alçak geçiş filtresi- yüksek frekanslı bileşenleri zayıflatır ve düşük frekanslı bileşenlerin rolünü geliştirir. Görüntülere uygulanan frekans, görüntüdeki ayrıntı miktarını yansıtır. Parlaklık dalgalanmaları, gürültü ve gürültü, bir görüntüdeki yüksek frekans öğelerinin örnekleridir. Görüntü yumuşatma, aşağıdaki çekirdekler kullanılarak uygulanır:

,

,

.

Yüksek geçiren filtre- görüntüdeki düşük frekanslı bileşenleri zayıflatır ve yüksek frekanslı bileşenlerin rolünü geliştirir. Yüksek geçiren filtreler, ana hatlar, kenarlar gibi ayrıntıları vurgulamak veya bir görüntüyü keskinleştirmek için kullanılır. Parlaklıktaki her sıçrama ve her kontur, artan frekanslarla ilişkili yoğun ayrıntıları temsil eder. Yüksek frekanslı bileşenlerin seçimi, aşağıdaki çekirdekler kullanılarak gerçekleştirilir:

,

,

.

Operatör Roberts. Roberts operatörü, doğrusal olmayan bir filtre örneğidir. Her pikselin Roberts çapraz operatörü ile dönüşümü, sıfır olmayan köşegen boyunca görüntünün türevini gösterebilir ve bu dönüştürülmüş görüntülerin kombinasyonu, aynı zamanda, üst iki pikselden alt iki piksele bir gradyan olarak da görüntülenebilir. Roberts operatörü, hesaplama hızı uğruna kullanılır, ancak önemli gürültü duyarlılığı sorunu nedeniyle alternatiflere kıyasla kaybeder. Diğer bordür seçim yöntemlerine göre daha ince çizgiler üretir.

İşleme aşağıdaki gibi yerleştirilmiş dört piksel dahil edilir (Şekil 1.6).

Pirinç. 1.6. Roberts operatörü tarafından işleme dahil edilen pikseller

Operatör Roberts yanıtı:

Bu durumda evrişim çekirdekleri şöyle görünecektir:

,

.

Her çekirdek için evrişim ayrı ayrı hesaplanır. Bu filtrenin yanıtı miktardır.

, (1.17)

nerede P ve Q- çekirdeklerin tepkisi H 1 ve H 2 .

Bazen, Roberts operatörü olarak miktarı alırız.
.

Sobel operatörü. Sobel operatörü, sınır tespit algoritmalarında kullanılır. Bir görüntünün parlaklık gradyanı için yaklaşık bir değer hesaplayan ayrık bir diferansiyel operatördür. Sobel operatörünü görüntünün her noktasına uygulamanın sonucu, bu noktadaki parlaklık gradyanının vektörü veya normudur. Sobel operatörünü kullanan kenar geliştirme yöntemi, iki farklı evrişim çekirdeğini dikkate alır:

Bu kıvrımlara dayanarak, kenarların boyutu ve yönü hesaplanır. Her çekirdek için evrişim ayrı ayrı hesaplanır. Bu filtrenin yanıtı miktardır.

, (1.19)

nerede P ve Q- çekirdeklerin tepkisi H 1 ve H 2 .

Bazen, Sobel operatörü olarak miktarı alırız.
.

Operatör Prewitt. Prewitt operatörü, Sobel operatörüne benzer şekilde hareket eder. Prewitt sınır detektörü, sınırın boyutunu ve yönünü tahmin etmek için uygun bir yöntemdir. Diferansiyel gradyan detektörü, dikey ve yatay değerler açısından zahmetli bir oryantasyon tahminleri hesaplaması gerektirse de, Prewitt sınır detektörü, maksimum sonuçla doğrudan çekirdekten yön verir. Prewitt operatörünü kullanan kenar geliştirme yöntemi, iki farklı evrişim çekirdeğini dikkate alır:

Prewitt operatörünün çalışmasının sonucu

, (1.21)

nerede P ve Q- çekirdeklerin tepkisi H 1 ve H 2 .

Laplace operatörü. Ayrık Laplace operatörü genellikle görüntü işlemede, örneğin sınır çıkarma veya hareket tahmini uygulamalarında kullanılır. Ayrık Laplacian, ikinci türevlerin toplamı olarak tanımlanır ve merkezi pikselin komşularındaki farkların toplamı olarak hesaplanır. Laplace'ın kenar geliştirme yöntemi, bir dizi farklı evrişim çekirdeğini dikkate alır. Bunlardan bazıları:

Gördüğünüz gibi, matrislerin elemanlarının toplamı sıfıra eşittir, bu nedenle filtre yanıtı negatif olabilir. Bu durumda yanıt değeri modulo olarak alınır. İşleme sonucunda, sabit veya doğrusal olarak artan yoğunluğa sahip alanlar siyah olur ve hızla değişen yoğunluk değerlerine sahip alanlar parlak bir şekilde vurgulanır.

Aşağıda, evrişim kategorisine girmeyen ve çeşitli gürültü türlerini ortadan kaldırmak için kullanılabilen bazı uzamsal süreçler verilmiştir.

Harmonik ortalama filtre... Bir serinin harmonik ortalaması
formülle hesaplanır

. (1.23)

Filtreleme işlemi sırasında, görüntünün mevcut pikselinin değeri ile değiştirilir.
mevcut ve bitişik olanlar dahil olmak üzere dokuz piksel değeri kümesi.

Min.- filtre. Filtreleme işlemi sırasında, mevcut pikselin değeri, komşu piksellerin minimum değeri ile değiştirilir. Örneğin, 3 boyutlu bir çekirdek için şunları elde edeceğiz:

Maks.- filtre. Filtreleme işlemi sırasında, mevcut pikselin değeri, komşu piksellerin maksimum değeri ile değiştirilir (önceki filtreye benzer şekilde).

Min.- Maks.-filtre. Filtreleme işleminde, görüntünün mevcut pikselinin değeri, önce komşu piksellerin minimum değeri ile değiştirilir ve tekrar tekrar maksimuma geçilir.

Medyan filtre. Ortalama filtreleme, yeni bir değer belirlemek için bitişik bölgede bulunan öğelerin değerlerini kullanır. Filtre, bitişik öğeleri sıralı bir şekilde düzenler ve ortalama değeri alır. Bu nedenle, örneğin, 3 boyutlu bir çekirdek için medyan değer beşinci olacaktır:

Uzamsal görüntü işleme teknikleri kullanılarak bir dizi ilginç efekt elde edilebilir. Bunlardan bazıları.

Kabartma efekti. Evrişim işlemi yardımıyla bir görüntü üzerinde kabartma efekti veren bir dönüşüm uygulayabilirsiniz.

(1.24)

İkili "sözde yarı ton" görüntüsü. Orijinal görüntü D2 veya D4 maskesi kullanılarak işlenir: piksel değeri karşılık gelen maske öğesinin orantılı değerinden küçükse sıfırlanır, aksi takdirde ona 255 atanır.Maske görüntüye örtüşmeden uygulanır. D2 ve D4 maskeleri:

,

.

Uzamsal süreçleri kullanırken, piksel işlemenin özellikleriyle ilgili olarak aşağıdaki sorular ortaya çıkabilir:

    Kenar etkilerinin ortadan kaldırılması;

    Yanıt değeri aralık dışında.

İlk soru için aşağıdaki çözümler mümkündür:

    Görüntüdeki kenar piksellerini dönüştürmeden hariç tut

bu durumda, çıktı görüntüsü daha küçük olacak veya kenarlık pikselleri örneğin siyahla boyanacak;

    Karşılık gelen pikseli toplamaya dahil etmeyin, ağırlığını komşuluktaki diğer pikseller arasında eşit olarak dağıtın;

    Kenarlık boyunca gerekli sayıda piksel ekleyerek orijinal görüntüyü tamamlayın (tamamlayın). Kural olarak, tamamlanan sütun satırlarının sayısı, çekirdeğin boyutuna bağlıdır. Burada iki seçenek mümkündür:

    • Ekstrapolasyon kullanarak görüntü sınırlarının dışındaki piksel değerlerini yeniden tanımlayın. Örneğin, sınıra yakın yoğunluk değerini sabit olarak kabul edin veya sınıra yakın yoğunluk gradyanını sabit olarak kabul edin;

      Aynasal yansımayı kullanarak görüntü sınırlarının dışındaki piksel değerlerini yeniden tanımlayın.

Aralık dışındaki bir değerle ilgili sorunları çözmek için aşağıdaki eylemler mümkündür:

    Olumlu filtre yanıtları için elde edilen değerleri ölçeklendirin;

    Negatif bir filtre yanıtı ile, mutlak değeri (modulo) alın veya sıfıra getirin.

Ayrıca bu bölümde, görüntüdeki gürültünün olası bir "sınıflandırmasını" vermeye değer:

    Tuz ve biber gürültüsü - rastgele beyaz ve siyah pikseller;

    Darbe gürültüsü - rastgele beyaz pikseller;

    Gauss gürültüsü, normal yasaya göre dağıtılan yoğunluk dalgalanmalarıdır.

Bu makale yalnızca en yaygın görüntü işleme filtrelerinden bahsetmekle kalmaz, aynı zamanda çalışmaları için algoritmaları anlaşılır bir biçimde açıklar. Makale öncelikle görüntü işleme ile ilgili programcılara yöneliktir.

evrişim matrisi

Evrişim matrisini kullanan birçok filtre vardır, başlıcaları aşağıda açıklanacaktır.

Evrişim matrisi, istenen sonucu elde etmek için görüntünün piksel değeriyle "çarpılan" bir katsayı matrisidir.

Aşağıda evrişim matrisinin uygulaması yer almaktadır:

div, ortalama yoğunluğun değişmeden kalması için normalleştirme katsayısıdır.

Örnekte, boyut daha büyük olmasına rağmen matris 3x3'tür.

Bulanıklaştırma filtresi

En yaygın olarak kullanılan evrişim matrisi tabanlı filtre, bulanıklık filtresidir.

Tipik olarak, matris normal (Gauss) yasasına göre doldurulur. Aşağıda Gauss dağılımıyla doldurulmuş 5x5 bulanıklık matrisi bulunmaktadır.

Katsayılar zaten normalleştirildi, bu nedenle bu matris için div birdir.

Bulanıklığın gücü matrisin boyutuna bağlıdır.

Sınır koşullarından bahsetmeye değer (bu problem tüm matris filtreleri için geçerlidir). Sol üst pikselin sağında bir “komşu” yoktur, bu nedenle matris katsayısını çarpacak hiçbir şeyimiz yoktur.

Bu sorunun 2 çözümü var:

I. Görüntünün yalnızca sol üst köşesinin koordinatlarına sahip "penceresine" ve sağ alt köşeye filtre uygulamak. kernelSize - matris boyutu; genişlik, yükseklik - görüntü boyutu.

Filtre görüntünün tamamına uygulanmadığından bu en iyi yol değildir. Bu durumda, filtre boyutu büyükse kalite oldukça düşer.

II. İkinci yöntem (ekleme), bir ara görüntünün oluşturulmasını gerektirir. Buradaki fikir, boyutları olan (genişlik + 2) geçici bir görüntü oluşturmaktır. kernelSize / 2, yükseklik + 2çekirdek Boyutu / 2). Giriş görüntüsü görüntünün merkezine kopyalanır ve kenarlar görüntünün dış pikselleriyle doldurulur. Bulanıklaştırma ara ara belleğe uygulanır ve ardından sonuç buradan alınır.

Bu yöntemin kalite açısından dezavantajı yoktur ancak gereksiz hesaplamalar yapmak gerekir.

Gauss bulanıklaştırma filtresinin karmaşıklığı O (merhaba wi n * n), burada hi, wi görüntünün boyutudur, n matrisin boyutudur (filtre çekirdeği). Bu algoritma kabul edilebilir kalitede optimize edilebilir.

Kare çekirdek (matris) iki tek boyutlu ile değiştirilebilir: yatay ve dikey. 5 çekirdek boyutu için şöyle görünürler:

Filtre 2 geçişte uygulanır: önce yatay, sonra sonuca göre dikey (veya bir tur).

Bu algoritmanın karmaşıklığı O (merhaba wi n) + O (merhaba wi n) = 2 O (merhaba wi * n), ikiden büyük çekirdek boyutları için geleneksel kare matris yönteminden daha hızlıdır.

Bileme filtresi

Netliği artırmak için aşağıdaki matrisi kullanmanız gerekir:

Bu matris sınırlardaki değerlerdeki farkı arttırır. Bu matris için div 1'dir.

GIMP, ihtiyacınız olan matris dönüşümünü bulmayı kolaylaştıran bir Evrişim Matrisi filtresine sahiptir.

Evrişim matrisine dayalı filtreler hakkında daha fazla bilgi için, "Bir rulo matrisine dayalı grafik filtreler" makalesine bakın.

medyan filtre

Gürültüyü azaltmak veya bir görüntüyü "pürüzsüzleştirmek" için yaygın olarak bir medyan filtresi kullanılır.

Filtre, çeşitli boyutlardaki matrislerle çalışır, ancak bir evrişim matrisinin aksine, matris boyutu yalnızca söz konusu piksel sayısını etkiler.

Medyan filtre algoritması aşağıdaki gibidir: Mevcut piksel için matrise "düşen" pikseller sıralanır ve sıralanan diziden ortalama değer seçilir. Bu değer, geçerli pikselin çıktısıdır. Aşağıda, üç çekirdek boyutu için medyan filtresinin çalışması yer almaktadır.

Erozyon ve birikme filtreleri

Birikme ve erozyon filtreleri sırasıyla morfolojik genişleme veya daralma elde etmek için kullanılır. Daha basit bir ifadeyle, görüntüler için bu, mahalleden maksimum veya minimum yoğunluğa sahip bir piksel seçmek anlamına gelir.

Bu makale yalnızca en yaygın görüntü işleme filtrelerinden bahsetmekle kalmaz, aynı zamanda çalışmaları için algoritmaları anlaşılır bir biçimde açıklar. Makale öncelikle görüntü işleme ile ilgili programcılara yöneliktir.

evrişim matrisi

Evrişim matrisini kullanan birçok filtre vardır, başlıcaları aşağıda açıklanacaktır.

Evrişim matrisi, istenen sonucu elde etmek için görüntünün piksel değeriyle "çarpılan" bir katsayı matrisidir.
Aşağıda evrişim matrisinin uygulaması yer almaktadır:

Div, ortalama yoğunluğun değişmeden kalması için tayınlama katsayısıdır.

Örnekte, boyut daha büyük olmasına rağmen matris 3x3'tür.

Bulanıklaştırma filtresi

En yaygın olarak kullanılan evrişim matrisi tabanlı filtre, bulanıklık filtresidir.

Tipik olarak, matris normal (Gauss) yasasına göre doldurulur. Aşağıda Gauss dağılımıyla doldurulmuş 5x5 bulanıklık matrisi bulunmaktadır.

Katsayılar zaten normalleştirildi, bu nedenle bu matris için div birdir.

Bulanıklığın gücü matrisin boyutuna bağlıdır.

Sınır koşullarından bahsetmeye değer (bu problem tüm matris filtreleri için geçerlidir). Sol üst pikselin sağında bir “komşu” yoktur, bu nedenle matris katsayısını çarpacak hiçbir şeyimiz yoktur.

Bu sorunun 2 çözümü var:

1. Bir filtreyi yalnızca görüntünün sol üst köşesinin koordinatlarına sahip olan "penceresine" ve sağ alt köşeye uygulayın. kernelSize - matris boyutu; genişlik, yükseklik - görüntü boyutu.

Filtre görüntünün tamamına uygulanmadığından bu en iyi yol değildir. Bu durumda, filtre boyutu büyükse kalite oldukça düşer.

2. İkinci yöntem (ekleme), bir ara görüntünün oluşturulmasını gerektirir. Buradaki fikir, boyutları olan geçici bir görüntü oluşturmaktır (width + 2 * kernelSize / 2, height + 2 * kernelSize / 2). Giriş görüntüsü görüntünün merkezine kopyalanır ve kenarlar görüntünün dış pikselleriyle doldurulur. Bulanıklaştırma ara ara belleğe uygulanır ve ardından sonuç buradan alınır.

Bu yöntemin kalite açısından dezavantajı yoktur ancak gereksiz hesaplamalar yapmak gerekir.

Gauss bulanıklık filtresi O (yüksek * wi * n * n) karmaşıklığına sahiptir; burada hi, wi görüntü boyutlarıdır, n matris boyutudur (filtre çekirdeği). Bu algoritma kabul edilebilir kalitede optimize edilebilir.

Kare çekirdek (matris) iki tek boyutlu ile değiştirilebilir: yatay ve dikey. 5 çekirdek boyutu için şöyle görünürler:

Filtre 2 geçişte uygulanır: önce yatay, sonra sonuca göre dikey (veya bir tur).

Bu algoritmanın karmaşıklığı O (hi * wi * n) + O (hi * wi * n) = 2 * O (hi * wi * n) olacaktır ki bu, ikiden büyük bir çekirdek boyutu için geleneksel algoritmadan daha hızlıdır. kare matrisli bir yöntem.

Bileme filtresi

Netliği artırmak için aşağıdaki matrisi kullanmanız gerekir:

Bu matris sınırlardaki değerlerdeki farkı arttırır. Bu matris için div 1'dir.

GIMP, ihtiyacınız olan matris dönüşümünü bulmayı kolaylaştıran bir Evrişim Matrisi filtresine sahiptir.

Makalede evrişim matrisine dayalı filtreler hakkında daha fazla bilgi bulabilirsiniz.

medyan filtre

Gürültüyü azaltmak veya bir görüntüyü "pürüzsüzleştirmek" için yaygın olarak bir medyan filtresi kullanılır.

Filtre, çeşitli boyutlardaki matrislerle çalışır, ancak bir evrişim matrisinin aksine, matris boyutu yalnızca söz konusu piksel sayısını etkiler.

Medyan filtre algoritması aşağıdaki gibidir:

Geçerli piksel için, matrise "düşen" pikseller sıralanır ve sıralanan diziden ortalama değer seçilir. Bu değer, mevcut pikselin çıktısıdır.

Aşağıda, üç çekirdek boyutu için medyan filtresinin çalışması yer almaktadır.

Birikme ve erozyon filtreleri sırasıyla morfolojik genişleme veya daralma elde etmek için kullanılır. Daha basit bir ifadeyle, görüntüler için bu, mahalleden maksimum veya minimum yoğunluğa sahip bir piksel seçmek anlamına gelir.

Birikmenin bir sonucu olarak, parlak nesnelerde bir artış ve erozyon - karanlık nesnelerde bir artış var.

Filtre, bir giriş görüntüsü ve bir ikili matris kullanır. İkili matris, komşuluğun şeklini belirler. Genellikle çevresi yuvarlaktır.

Birikme filtresi, parlamayı, parlak yansımaları artırmak için kullanılabilir.

Çözüm

Makale, bazı görüntü işleme filtrelerini açıklar, algoritmalarını ve uygulama özelliklerini açıklar.

Bildiğiniz gibi, dijital teknikleri kullanarak görüntüleri değiştirmenin ve düzenlemenin birçok yolu vardır. Bu durumda görüntü işlemenin sonucu, görüntü bilgisayarınıza ulaştıktan sonra hangi işlemleri yapabileceğinize bağlıdır: düzenleyebilirsiniz. RGB- en iyi renk dengesini elde etmek için renk bileşenleri. Çeşitli grafik filtreleri kullanarak görüntünün parlaklığını artırabilir veya azaltabilir, keskinliğini düzenleyebilir veya tek tek öğeleri bulanıklaştırabilirsiniz. Bilgisayar grafiklerinde yaygın olarak kullanılan son derece popüler efektlere bir göz atacağız:

  • Renklerin ters çevrilmesi.
  • Bulanıklık.
  • Bileme.
  • Kabartma.
  • Suluboya efekti.

Matris - evrişim çekirdeği

Bu etkileri algoritmik bir bakış açısıyla ele alırsak, karmaşık bir şey görmeyeceğiz: bu etkiler bir sayı matrisi kullanılarak oluşturulur. Bu matris, evrişimin çekirdeği olarak adlandırılır.

Bu matris ( 3x3) üç sayıdan oluşan üç satır içerir. Bir görüntü pikselini dönüştürmek için, çekirdeğin merkezindeki değerle çarpılır ve verilen pikselin etrafındaki piksellerin değerleri, çekirdeğin karşılık gelen katsayıları ile çarpılır, ardından tüm değerler toplanır. yukarı ve değişken piksel için yeni bir değer elde ederiz. Bu işlem, düzenlenen görüntünün her pikseli ile sırayla gerçekleştirilmelidir.

Düzenlenen görüntünün nasıl değişeceği, çekirdeğin katsayılarına bağlıdır. Bazı efektler elde etmek için, görüntüye art arda bir değil birkaç matris uygulamak gerekir.

Renk inversiyonu

Bu, bir görüntüyü düzenlemenin en kolay yolu: bir matrise bile ihtiyacımız yok. Sadece renk bileşenlerini zıt bileşenlerle değiştirmemiz gerekiyor (daha fazla ayrıntı için, bölümün sonraki bölümünde filtreyi uygularken).

Bulanıklaştırma algoritması

Görüntüyü bulanıklaştırmak için değerleri hafızaya okumamız gerekiyor. RGB-her pikselin renginin bileşenleri. Bundan sonra, bulanıklaştırma çekirdeği, düzenlenen görüntünün tüm piksellerinin renginin tüm bileşenlerine uygulanacaktır:
Şekil 1. "Bulanıklaştırma" filtresi için matris.

Çekirdeğin merkezinin altında bulunan pikselin rengini belirlemek için, çekirdeğin ağırlık katsayılarını, düzenlenen görüntünün renginin karşılık gelen değerleriyle çarpmak gerekir. Daha sonra sonuçlar özetlenir.

İşlenen her pikselin rengi komşu pikseller arasında "yayıldığından" ortaya çıkan görüntü orijinaline kıyasla "bulanık" olur.

Bulanıklığın özünü artırmak için şunları yapabilirsiniz:

  • daha büyük bir çekirdek kullanın (bu şekilde renk daha fazla sayıda komşu piksel arasında dağıtılacaktır);
  • katsayıları, merkezi katsayının etkisini azaltacak şekilde değiştirin;
  • görüntüyü bir kereden fazla filtreleyin;

bileme algoritması

Keskinleştirme efektini oluşturmak için aynı algoritmayı izliyoruz, ancak farklı bir çekirdek kullanıyoruz, çünkü artık amacımız görüntüyü keskinleştirmek. Çekirdek G keskinleştirmek:
Şekil 2. "Keskinleştirme" filtresi için matris.
Önceki durumda olduğu gibi, ayrı ayrı işliyoruz RGB-bileşenler, ardından işlenen pikselin renk değerlerini oluştururuz. Negatif ağırlıklar, merkez piksel ve komşuları arasındaki kontrastı artırmak için kullanılır.

Böylece ortaya çıkan görüntü orijinalinden daha keskindir. Esasen, ekstra ayrıntı hiçbir şeyden gelmez - bu sadece piksel renkleri arasındaki artan kontrasttır.

Kabartma Algoritması

Kabartma benzer şekilde yapılır, ancak bu durumda bir değil birkaç kalıp kullanıyoruz.
Şekil 3.1 "Kabartma" filtresi için matris: birinci adım.
Bulanıklaştırma ve keskinleştirme çekirdeklerinin katsayılarının toplamı bire eşitken, bu durumda kabartma çekirdeğindeki ağırlıkların toplamı eşittir 0 ... Oranların toplamı eşit değilse 0 , belirli bir renk için bir sapma elde edeceğiz.

Ortaya çıkan renk değeri ayrıca işlenecek (ortalaması) ve aralığa indirgenecektir. 0-255 (bu filtreyi uygularken daha fazla ayrıntı görebilirsiniz). Konumların değerlerini değiştirme 1 ve -1 , tersine çevrilmiş bir vurgu yönü elde edebiliriz.
Şekil 3.2. "Kabartma" filtresi için matris: ikinci adım.

aquarelle algoritması

Suluboya filtresinin adı kendisi için konuşur: ortaya çıkan görüntü suluboya ile boyanmış gibi görünecektir. Bu filtreyi uygulamanın ilk aşamasında, düzenlenen görüntünün renklerini düzelteceğiz.
Şekil 4.1. "Suluboya efekti" filtresi için matris: birinci adım.
Bir sonraki adımda, sulu boya efektini tamamlamak için geçişleri keskinleştireceğiz.
Şekil 4.2. "Suluboya efekti" filtresi için matris: ikinci adım.
Bu kadar. Matris parametrelerini biraz ayarlayarak hem daha keskin hem de daha pürüzsüz bir suluboya efekti elde edebiliriz. br />

Bu makale yalnızca en yaygın görüntü işleme filtrelerinden bahsetmekle kalmaz, aynı zamanda çalışmaları için algoritmaları anlaşılır bir biçimde açıklar. Makale öncelikle görüntü işleme ile ilgili programcılara yöneliktir.

evrişim matrisi

Evrişim matrisini kullanan birçok filtre vardır, başlıcaları aşağıda açıklanacaktır.

Evrişim matrisi, istenen sonucu elde etmek için görüntünün piksel değeriyle "çarpılan" bir katsayı matrisidir.
Aşağıda evrişim matrisinin uygulaması yer almaktadır:

Div, ortalama yoğunluğun değişmeden kalması için tayınlama katsayısıdır.

Örnekte, boyut daha büyük olmasına rağmen matris 3x3'tür.

Bulanıklaştırma filtresi

En yaygın olarak kullanılan evrişim matrisi tabanlı filtre, bulanıklık filtresidir.

Tipik olarak, matris normal (Gauss) yasasına göre doldurulur. Aşağıda Gauss dağılımıyla doldurulmuş 5x5 bulanıklık matrisi bulunmaktadır.

Katsayılar zaten normalleştirildi, bu nedenle bu matris için div birdir.

Bulanıklığın gücü matrisin boyutuna bağlıdır.

Sınır koşullarından bahsetmeye değer (bu problem tüm matris filtreleri için geçerlidir). Sol üst pikselin sağında bir “komşu” yoktur, bu nedenle matris katsayısını çarpacak hiçbir şeyimiz yoktur.

Bu sorunun 2 çözümü var:

1. Bir filtreyi yalnızca görüntünün sol üst köşesinin koordinatlarına sahip olan "penceresine" ve sağ alt köşeye uygulayın. kernelSize - matris boyutu; genişlik, yükseklik - görüntü boyutu.

Filtre görüntünün tamamına uygulanmadığından bu en iyi yol değildir. Bu durumda, filtre boyutu büyükse kalite oldukça düşer.

2. İkinci yöntem (ekleme), bir ara görüntünün oluşturulmasını gerektirir. Buradaki fikir, boyutları olan geçici bir görüntü oluşturmaktır (width + 2 * kernelSize / 2, height + 2 * kernelSize / 2). Giriş görüntüsü görüntünün merkezine kopyalanır ve kenarlar görüntünün dış pikselleriyle doldurulur. Bulanıklaştırma ara ara belleğe uygulanır ve ardından sonuç buradan alınır.

Bu yöntemin kalite açısından dezavantajı yoktur ancak gereksiz hesaplamalar yapmak gerekir.

Gauss bulanıklık filtresi O (yüksek * wi * n * n) karmaşıklığına sahiptir; burada hi, wi görüntü boyutlarıdır, n matris boyutudur (filtre çekirdeği). Bu algoritma kabul edilebilir kalitede optimize edilebilir.

Kare çekirdek (matris) iki tek boyutlu ile değiştirilebilir: yatay ve dikey. 5 çekirdek boyutu için şöyle görünürler:

Filtre 2 geçişte uygulanır: önce yatay, sonra sonuca göre dikey (veya bir tur).

Bu algoritmanın karmaşıklığı O (hi * wi * n) + O (hi * wi * n) = 2 * O (hi * wi * n) olacaktır ki bu, ikiden büyük bir çekirdek boyutu için geleneksel algoritmadan daha hızlıdır. kare matrisli bir yöntem.

Bileme filtresi

Netliği artırmak için aşağıdaki matrisi kullanmanız gerekir:

Bu matris sınırlardaki değerlerdeki farkı arttırır. Bu matris için div 1'dir.

GIMP, ihtiyacınız olan matris dönüşümünü bulmayı kolaylaştıran bir Evrişim Matrisi filtresine sahiptir.

Evrişim matrisine dayalı filtreler hakkında daha fazla bilgi için, "Bir rulo matrisine dayalı grafik filtreler" makalesine bakın.

medyan filtre

Gürültüyü azaltmak veya bir görüntüyü "pürüzsüzleştirmek" için yaygın olarak bir medyan filtresi kullanılır.

Filtre, çeşitli boyutlardaki matrislerle çalışır, ancak bir evrişim matrisinin aksine, matris boyutu yalnızca söz konusu piksel sayısını etkiler.

Medyan filtre algoritması aşağıdaki gibidir:

Geçerli piksel için, matrise "düşen" pikseller sıralanır ve sıralanan diziden ortalama değer seçilir. Bu değer, mevcut pikselin çıktısıdır.

Aşağıda, üç çekirdek boyutu için medyan filtresinin çalışması yer almaktadır.

Birikme ve erozyon filtreleri sırasıyla morfolojik genişleme veya daralma elde etmek için kullanılır. Daha basit bir ifadeyle, görüntüler için bu, mahalleden maksimum veya minimum yoğunluğa sahip bir piksel seçmek anlamına gelir.

Birikmenin bir sonucu olarak, parlak nesnelerde bir artış ve erozyon - karanlık nesnelerde bir artış var.

Filtre, bir giriş görüntüsü ve bir ikili matris kullanır. İkili matris, komşuluğun şeklini belirler. Genellikle çevresi yuvarlaktır.

Birikme filtresi, parlamayı, parlak yansımaları artırmak için kullanılabilir.

Çözüm

Makale, bazı görüntü işleme filtrelerini açıklar, algoritmalarını ve uygulama özelliklerini açıklar.