layout | title | slug | author | categories | references | thumbnail | |||
---|---|---|---|---|---|---|---|---|---|
post |
L0 Gradyan En Küçükleme ile İmge Yumuşatma |
l0-gradient-minimization |
Bahri ABACI |
|
Image Smoothing via L0 Gradient Minimization |
/assets/post_resources/image_smoothing/thumbnail.png |
İmge yumuşatma (Image smoothing) imgeyi oluşturan renk sayısının belirli görüntü işleme teknikleri ile azaltılması işlemidir. Bu işlem özellikle gürültülü görüntüleri gürültüden arındırmakta sıklıkla kullanılan bir yöntemdir. Renklerin azaltılması işlemi bu blogda da değindiğimiz [K-means Kümeleme]({% post_url 2015-08-28-k-means-kumeleme-algoritmasi %}), [Kutu Bulanıklaştırma]({% post_url 2019-02-17-tumlev-imge %}), Gaussian Bulanıklaştırma veya Ortanca Süzgeçler yardımıyla yapılabilir. Bu yazımızda yukarıda sayılan yöntemlerden farklı olarak problemi tamamen matematiksel bir şekilde formülize ederek bir optimizasyon problemine dönüştüren bir yöntem incelenecektir. İncelenecek yöntem, Li Xu ve arkadaşları tarafından 2011 yılında SIGGRAPH konferansında "Image Smoothing via L0 Gradient Minimization" ismi ile yayınlanan bildiriyle literatüre kazandırılmış ve farklı alanlarda kullanılarak binin üzerinde atıf almıştır.
Önerilen yöntemin literatürdeki diğer yöntemlerden en önemli farkı; renk yumuşatma işlemini görüntüdeki renk geçilerini sınırlandıracak bir optimizasyon problemi olarak ifade etmesidir. Görüntüdeki her bir renk geçişinin küçük veya büyük bir gradyan yaratacağından önerilen yöntemin temel hedefi görüntüdeki gradyanların sayısının belirli bir limit altında tutulmasıdır. Matematiksel olarak bir değişkenin sayısı
Denklem
Yazılan optimizasyon fonksiyonu oldukça basit görünse de
Tanımlanan problem
Dönüşümlü optimizasyon stratejisini kullanabilmek için
Yazılan ifadede
Denklem
Denklem
Elde edilen ifadede sol tarafta
çekirdeği ile evrişim işlemi sonucunda hesaplanır. Benzer şekilde $\nabla_x = \begin{bmatrix}-1 & 1\end{bmatrix}$ ve $\nabla_y = \begin{bmatrix}-1 && 1\end{bmatrix}^\intercal$ ifadeleri de yönlü gradyan operatörünü göstermektedir.
[Poisson Denklemi Yardımıyla Görüntü Düzenleme]({% post_url 2020-09-20-poisson-denklemi-yardimiyla-goruntu-duzenleme %}) yazımızda yaptığımız şekilde bu denklemleri bir matris içerisinde yazmak istersek aşağıdaki matris ifadesi elde edilir.
Elde edilen
Yazımızın ilk kısmında da değindiğimiz üzere Denklem
ifadesinin çözümü dış bükey veya türevlenebilir olmadığından problemin nümerik olarak çözülmesi hala problemlidir. Ancak basit bir akıl yürütme yapılarak
Eşitliği elde edilir. Denklem
Denklem
Bu durumda
Yukarıda elde edilen iki alt problem ve çözümü birlikte ele alındığında Denklem
- GİRDİLER
$I$ : imge$\beta, \beta_0, \beta_\text{max}$ : yumuşatma parametresi$\lambda$ : gradyan cezası$\kappa$ :$\beta$ adım büyüklüğü- ÇIKTILAR
$S$ : yumuşatılmış imge
$S$ =$I$ $\beta = \beta_0$ - while
$\beta < \beta_\text{max}$
- Denklem
$\eqref{5}$ ve$S$ yi kullanarak$h,v$ değerlerini hesapla- Bulunan
$h,v$ değerlerini kullanarak$B=I + \beta \left( \nabla^\intercal_x h + \nabla^\intercal_y v \right)$ matrisini hesapla$B$ ve Denklem$\eqref{3}$ ü kullanarak yeni$S$ yi hesapla$\beta = \kappa \beta$ ile$\beta$ değerini artır- return
$S$
Verilen algoritmadan görüldüğü üzere ilk olarak girdi imgesi
Yukarıda verilen algoritma IMLAB görüntü işleme kütüphanesi kullanılarak L0Minimize(matrix_t *input, float lambda, float beta0, float betaMax, float kappa, matrix_t *output)
fonskiyonu şeklinde yazılmıştır. Yazılan fonksiyon makalede de önerilen parametreler kullanılarak aşağıdaki şekilde kullanılmıştır.
matrix_t *img = imread("..//data//flower.bmp");
matrix_t *output = matrix_create(uint8_t);
// set the L0 minimization paramaters
float lambda = 0.03f;
float kappa = 2.0f;
float beta0 = 2.0f * lambda;
float betaMax = 1e5f;
// create L0 regularized image
L0Minimize(img, lambda, beta0, betaMax, kappa, output);
Yazılan kod parçası farklı imgeler üzerinde çalıştırılarak aşağıdaki sonuçlar elde edilmiştir. Üretilen sonuçların giriş kısmında değinilen benzer algoritmalarla karşılatırılabilmesi için Gaussian Bulanıklaştırma
Kaynak İmge | Gaussian Bulanıklaştırma | Ortanca Süzgeç | Seçici Gaussian Bulanıklaştırma | L$0$ Yumuşatma |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Verilen tablo incelendiğinde önerilen yöntemin pencere boyundan bağımsız olarak çok geniş alanlarda da yumuşatma işlemi yapabildiği ve bunu yaparken görüntüyü herhangi bir şekilde bulanıklaştırmadığı görülmektedir.
Yazıda yer alan analizlerin yapıldığı kod parçaları, görseller ve kullanılan veri setlerine Image Smoothing GitHub sayfası üzerinden erişebilirsiniz.
Referanslar
- Xu, Li, et al. "Image smoothing via L 0 gradient minimization." Proceedings of the 2011 SIGGRAPH Asia Conference. 2011.
- Wang, Yilun, et al. "A new alternating minimization algorithm for total variation image reconstruction." SIAM Journal on Imaging Sciences 1.3 (2008): 248-272.