Bir evrişim matrisi nasıl çalışır?

3 Cevap php

Ben bu programlama çok alakalı değil biliyorum, ama ben bir evrişim matrisi bir PHP GD fonksiyonu için nasıl çalıştığını bilmek gerekir. Google'da çok aradım, ama iyi açıklıyor şey bulamıyorum.

3 Cevap

Işlemi ağırlıkları matrisi tarafından verilen çevresinde piksel, ağırlıklı ortalama her pikseli değiştirir. İşte bir örnek evrişim matrisi var:

1 1 1
1 1 1
1 1 1

Ne yapar o piksel merkezli 3x3 bloğun ortalama değeri ile her bir pikseli değiştirin. İşte bir başkasının:

0 0 0
0 1 0
0 0 0

Bu matris bir şey yapmaz, size orijinal geri verir.

Ağırlıkları da negatif olabilir. Bu matris, bir sonraki piksel için ortalama piksel değerini çıkarır:

 0 -1  0
-1  4 -1
 0 -1  0

Konvolusyon matrisler ince ayarı bulanıklık ve netlik efektler yapmak için izin verir. Eğer yeterince büyük ise, ayar bir evrişim matrisi kullanılarak yönünü ve filtrelerin frekans yanıtı olabilir. Ancak, genellikle hızlı-n-kirli bulanıklık ve netlik için kullanılır.

Ben PHP için özel olarak bilmiyorum, ama genel bir evrişim matrisi görüntü işleme etkileri belirli tür uygulamak için kullanılır.

GD üzerinde PHP kılavuzuna alınan basit bir örnek http://www.php.net/manual/en/function.imageconvolution.php:

Diyelim ki böyle bir matris var diyelim:

$M = array(array( 2,  0,  0),
           array( 0, -1,  0),
           array( 0,  0, -1));

Eğer bir görüntü bu evrişim matrisi uyguladığınızda, o görüntüde (x, y) bulunan her bir piksel için, çıktı gelen piksel olur:

$I = $in_image;
$out_image[x,y] = $I[x-1,y-1]*$M[0][0] + $I[x,y-1]*$M[0][1] + $I[x+1,y-1]*$M[0][2]
                + $I[x-1,y]  *$M[1][0] + $I[x,y]  *$M[1][1] + $I[x+1,y]  *$M[1][2]
                + $I[x-1,y+1]*$M[2][0] + $I[x,y+1]*$M[2][1] + $I[x+1,y+1]*$M[2][2];

Diğer bir deyişle, evrişim matris kaynak piksel ve onu çevreleyen bir piksel lineer bir kombinasyonu olarak her bir sonuç piksel hesaplamak için kullanılır.

Bölen parametresi bir şey (bu genellikle matris içinde tüm değerlerin toplamıdır) tarafından tüm sonuç bölmek için kullanılan son çıkış değeri sabit bir terim eklemek için kullanılır ofset.