Histogram, sayısal bir resim içerisinde her renk değerinden kaç adet olduğunu gösteren grafiktir. Bu grafiğe bakılarak resmin parlaklık durumu ya da tonları hakkında bilgi sahibi olunabilir.
Histogram Eşitleme: Histogram eşitleme ile belirli bir ton etrafında toplanan histogram eğrisi (0-255) tonları arasına düzgün bir şekilde dağıtılır böylece resmin gri ton dağılımının homojen olarak yapılandırılması sağlanır. Histogram eşitleme işleminde, resmin kümülatif gri seviye dağılım skalası üzerinde normal dağılım uygulanmaktır. Bu yeniden dağılım, gri seviye dağılımında dengeleme sağlamaktadır.
Histogram Eşitleme: Histogram eşitleme ile belirli bir ton etrafında toplanan histogram eğrisi (0-255) tonları arasına düzgün bir şekilde dağıtılır böylece resmin gri ton dağılımının homojen olarak yapılandırılması sağlanır. Histogram eşitleme işleminde, resmin kümülatif gri seviye dağılım skalası üzerinde normal dağılım uygulanmaktır. Bu yeniden dağılım, gri seviye dağılımında dengeleme sağlamaktadır.
Histogram Eğrileri |
Histogram Eşitlenmiş Görüntü ve Eğrisi |
This file contains hidden or 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 | |
{ | |
Image<Bgr, Byte> imgInput; | |
Image<Gray, Byte> imgGray; | |
public MainForm() | |
{ | |
InitializeComponent(); | |
} | |
private void m_buttonImageLoad_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
OpenFileDialog ofd = new OpenFileDialog(); | |
if (ofd.ShowDialog() == DialogResult.OK) | |
{ | |
imgInput = new Image<Bgr, Byte>(ofd.FileName); | |
m_pictureBoxImage.Image = imgInput.Bitmap; | |
m_histogramBoxOriginalImage.ClearHistogram(); | |
m_histogramBoxOriginalImage.GenerateHistograms(imgInput, 256); | |
m_histogramBoxOriginalImage.Refresh(); | |
} | |
m_labelImgSize.Text = imgInput.Width + "x" + imgInput.Height; | |
} | |
catch (Exception ex) | |
{ | |
MessageBox.Show(ex.GetType().Name + " " + ex.Message); | |
} | |
} | |
private void m_buttonGrayScale_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
imgGray = imgInput.Convert<Gray, Byte>(); | |
m_pictureBoxChangedImage.Image = imgGray.Bitmap; | |
m_histogramBoxChangedImage.ClearHistogram(); | |
m_histogramBoxChangedImage.GenerateHistograms(imgGray, 256); | |
m_histogramBoxChangedImage.Refresh(); | |
} | |
catch (Exception ex) | |
{ | |
MessageBox.Show(ex.GetType().Name + " " + ex.Message); | |
} | |
} | |
private void m_buttonHistEqu_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
Mat m = new Mat(); | |
CvInvoke.EqualizeHist(imgGray, m); | |
m_pictureBoxChangedImage.Image = m.Bitmap; | |
m_histogramBoxChangedImage.ClearHistogram(); | |
m_histogramBoxChangedImage.GenerateHistograms(new Image<Gray, Byte>(new Bitmap(m_pictureBoxChangedImage.Image)), 256); | |
m_histogramBoxChangedImage.Refresh(); | |
} | |
catch (Exception) | |
{ | |
MessageBox.Show("Lütfen resmi GrayScale Yapınız.","UYARI", MessageBoxButtons.OK); | |
} | |
} | |
} |