Görüntü işlemede en temel işlemlerden birisidir bir görüntünün negatifini hesaplamaktır.
Görüntünün negatifi bir kaç nedenden alınabilir.
Görüntünün negatifi bir kaç nedenden alınabilir.
- Negatifi alınmış görüntü bize daha fazla bilgi verebilir,
- Görüntü daha anlaşılır kılınabilir.
Resmin negatifi resmin piksel değerlerinin 255-maksimum koyuluk değeri ile farkının alınmasıdır. Aşağıda örnek resmi görebilirsiniz. Negatifi alınmış resimler bazı resimlerde insan algısı için çok net ifadeler oluşturmasa da işe yarar şekilde kullanılabiliyor. Örneğin, bazı resimlerde algılanması güç olan ayrıntılar negatif alma işleminden sonra daha kolay algılanabilir hale geliyor veya bazı kısımları daha anlaşılır olmasını sağlıyor.
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 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_buttonEqualizeHist_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
Mat m = new Mat(); | |
CvInvoke.EqualizeHist(m_originalImage.Convert<Gray, Byte>(), m); | |
m_pictureBoxResult.Image = m.Bitmap; | |
} | |
catch (Exception ex) | |
{ | |
MessageBox.Show(ex.Message); | |
} | |
} | |
private void m_buttonResult_Click(object sender, EventArgs e) | |
{ | |
try | |
{ | |
//İKİNCİ YÖNTEM | |
//var img = m_originalImage.Convert<byte>(b => (byte)(byte.MaxValue - b)); | |
//var whiteImg = new Image<Gray, Byte>(m_originalImage.Width, m_originalImage.Height, new Gray(255)); | |
//var img = whiteImg - m_originalImage; | |
var img = m_originalImage.Not(); | |
m_pictureBoxResult.Image = img.ToBitmap(); | |
m_labelResultSize.Text = img.Width + "x" + img.Height; | |
} | |
catch (Exception ex) | |
{ | |
MessageBox.Show(ex.Message); | |
} | |
} | |
} |