Gamma Dönüşümü, bir resmin amiyane tabirle aydınlığını belirlemeye yarayan çarpandır. Kelime bu çarpan için kullanılan grek alfabesindeki γ (gama) sembolünden gelmektedir. Literatürde gama kodlaması (gamma encoding) , gama eğrisi (gamma nonlinearity) gibi kavramlarla da ifade edilmektedir.
Belirli bir alt sınırın altında bir gir-diyi bir alçak çıktı düzeyine ve be-lirli bir üst sınırın üstündeki girdiyi de bir üst çıktı düzeyine atar
Alt ve üst düzey sınırlar arasındaki girdileri ise alt ve üst sınır çıktı düzeyleri arasındaki düzeylerle anahtarlar.
1 den küçük gama değerleri için üretilen görüntü çıktısı , girdiye göre daha parlak bir görüntü olurken; 1 den büyük gama değerlerinde daha koyu bir görüntü çıktısı elde edilir.
Gama değeri 1 olarak seçildiğinde ise doğrusal anahtarlama yapılır. Gama düzeltmesinin bu şekilde kullanımı, bir görüntüdeki ilgilenilen belirli bir yoğunluk kuşağını öne çıkarmak için çok kullanışlıdır.
UYGULAMA:
En basit anlamda bir değerin üstü olarak gösterilen γ çapanıdır. Bu durumda
olarak gösterilebilir. Yani giriş değerinin üssel fonksiyonudur.Alt ve üst düzey sınırlar arasındaki girdileri ise alt ve üst sınır çıktı düzeyleri arasındaki düzeylerle anahtarlar.
1 den küçük gama değerleri için üretilen görüntü çıktısı , girdiye göre daha parlak bir görüntü olurken; 1 den büyük gama değerlerinde daha koyu bir görüntü çıktısı elde edilir.
Gama değeri 1 olarak seçildiğinde ise doğrusal anahtarlama yapılır. Gama düzeltmesinin bu şekilde kullanımı, bir görüntüdeki ilgilenilen belirli bir yoğunluk kuşağını öne çıkarmak için çok kullanışlıdır.
- (a) : orijinal görüntü
- (b) : c=1, gama=0.6 ile gama düzeltmesi
- (c) : c=1, gama=0.4 ile gama düzeltmesi
- (d): c=1, gama=0.3 ile düzeltmesi
- (a) : orijinal görüntü
- (b) : c=1, gama=3.0 ile gama düzeltmesi
- (c) : c=1, gama=4.0 ile gama düzeltmesi
- (d) : c=1, gama=5.0 ile gama düzeltmesi
UYGULAMA:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public partial class MainForm : Form | |
{ | |
private Image<Gray, Byte> m_originalImage; | |
private Image<Gray, Byte> m_resultImage; | |
private static void fillSizeInfo(Label label, Mat m) | |
{ | |
label.Text = m.Width + "x" + m.Height; | |
} | |
public MainForm() | |
{ | |
InitializeComponent(); | |
} | |
private void m_buttonOK_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
OpenFileDialog dlg = new OpenFileDialog(); | |
if (dlg.ShowDialog() != DialogResult.OK) | |
return; | |
m_originalImage = new Image<Gray, Byte>(dlg.FileName); | |
m_pictureBoxOriginalImage.Image = m_originalImage.ToBitmap(); | |
fillSizeInfo(m_labelOriginalSize, m_originalImage.Mat); | |
} | |
catch (Exception ex) { | |
MessageBox.Show(ex.GetType().Name + " " + ex.Message); | |
} | |
} | |
private void m_buttonResult_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
m_resultImage = (Image<Gray, Byte>)m_originalImage.Clone(); | |
m_resultImage._GammaCorrect(m_trackBarGammaValue.Value / 10D); | |
var img = m_resultImage; | |
m_resultImage = img.Convert<Gray, Byte>(); | |
m_pictureBoxResult.Image = img.ToBitmap(); | |
m_labelResultSize.Text = img.Width + "x" + img.Height; | |
} | |
catch (Exception ex) | |
{ | |
MessageBox.Show(ex.Message); | |
} | |
} | |
private void m_trackBarGammaValue_ValueChanged(object sender, EventArgs e) | |
{ | |
try | |
{ | |
m_resultImage = (Image<Gray, Byte>)m_originalImage.Clone(); | |
m_resultImage._GammaCorrect(m_trackBarGammaValue.Value / 10D); | |
m_pictureBoxResult.Image = m_resultImage.ToBitmap(); | |
} | |
catch (Exception ex) | |
{ | |
MessageBox.Show(ex.Message); | |
} | |
} | |
} |