第三章图像增强.doc

  • 格式:doc
  • 大小:2.16 MB
  • 文档页数:28

数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 第三章 图像增强

一:问题的引入

对比度的概念:

对比度:通俗地讲,就是亮暗的对比程度。 数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 对比度通常表现了图像画质的清晰程度。

一般情况下,在各类图像系统中图像的传送和转换(如成像,复制,扫描,传输以及显示等)总是要造成图像的某些降质。例如,摄像时,由于光学系统失真,相对运动,大气湍流等都会使图像模糊。再如传输过程中,噪声污染图像,使人观察起来不满意,或者使及其从中提取的信息减少甚至造成错误。因此,必须对降质图像进行改善处理。

改善的办法有两类:一类是不考虑图像降质的原因,只将图像中感兴趣的特征有选择的突出,而衰减其不需要的特征,故改善后的图像不一定要去逼近原图像。如突出目标轮廓,衰减各类噪声,将黑白图像转变为彩色图像等等。这一类图像改善方法统称为图像增强技术 。从图像质量评价观点来看 ,图像增强技术主要目的是提高图像的可懂度。另一类改善方法是针对图像降质原因,设法去补偿降质因素,从而使改善后的图像尽可能地逼近原始图像。这类改善方法数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 统称为图像复原技术。显然,图像复原技术主要目的使提高图像质量的逼真度。

图像增强技术有两类方法:空间域法和频率域法。空间域中的方法主要使在空间域那对图像象素灰度值直接运算处理 。例如 :将包含某点的一个小区域那各点灰度值进行平均运算,用所得平均值来代替该点的灰度值。这就是所谓平滑处理。

二、灰度变换增强

空间域图像处理可以表示为:

g(x,y)=T[f(x,y)]

其中,f(x,y)表示增强之前的图像,g(x,y)表示增强处理之后的图像,T是对f的一种变换,其定义在(x,y)的邻域上。如果T定义在每个(x,y)点上,则T称为点操作;如果T定义在(x,y)的某个邻域上,则T称为模板操作

1、灰度n倍增强

(1)基本原理

当图像的灰度值比较集中在灰度区域数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 的低端时,可以把图像像素的灰度值都扩大n倍。即

g(x,y)=n*f(x,y)

在原始图像位置(x,y)处的像素灰度值f(x,y)乘以n后,图像位置(x,y)处的像素灰度值就变为g(x,y)。当结果大于255时,按255计算。

void CDynSplitView::OnAmplify()

{

// TODO: 在此添加命令处理程序代码

clearmem();

int nf,n=2;

for (int i=0;i

{

for (int j=0;j

{

nf=*(image_in+i*m_imagex+j)*n;

if(nf>255)

nf=255;

*(image_out+i*m_imagex+j)=nf;

}

} 数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 Invalidate();

}

(2)设置参数输入对话框:

1)插入对话框资源

caption: 灰度增强

ID:ID_BRIGHTNESS

并为对话框添加关联类:

CBrightness

2)添加静态文本提示:

输入放大倍数

3)添加文本编辑框

ID: IDC_AMPLIFY

并为该编辑框添加关联数值(value)float变量:m_namplify

4)为确定按钮添加OnBnClickedOk单击相应函数

void CBrightness::OnBnClickedOk()

{ // TODO: 在此添加控件通知处理程序代数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 码

UpdateData();

OnOK();

}

5)在CDynSplitView.cpp中添加

#include "Brightness.h"

并改写OnAmplify()函数

void CDynSplitView::OnAmplify()

{

// TODO: 在此添加命令处理程序代码

CBrightness dlg;

dlg.DoModal();

clearmem();

int nf;

float n=dlg.m_namplify;

for (int i=0;i

{

for (int j=0;j

{

nf=(int)(*(image_in+i*m_imagey+j)*n); 数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 if(nf>255)

nf=255;

*(image_out+i*m_imagey+j)=nf;

}

}

Invalidate();

}

6)保存处理后的图像

在CDynSplitView视图类中添加事件函数OnFileSave( ) 数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 void CDynSplitView::OnFileSave()

{

// TODO: 在此添加命令处理程序代码

CdipaxDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDoc->Cdib.m_lpData=image_out; //保存处理后的图像数据image_out

CFileDialog

dlg(FALSE,_T("BMP"),_T("*.BMP"),OFN_HIDEREADONLY

|OFN_OVERWRITEPROMPT, _T("位图文件(*.BMP)|*.BMP|"));

if(IDOK==dlg.DoModal ())

pDoc->Cdib.SaveFile(dlg.GetPathName());

pDoc->Cdib.m_lpData=image_in; //保存完成后原图像数据区指针保存不变

}

2、图像反转处理

灰度级在[0,L-1]范围内的图像反转变换公式: 数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 g(x,y)=L-1-f(x,y)

用这种方式倒转图像的强度产生图像反转的对等图像。这种处理尤其适用于增强嵌入与图像暗色区域的白色或灰色细节,特别是当黑色面积占主导地位时。

添加菜单项”图像翻转”,并添加菜单事件处理函数ReversalImage( )

void ReversalImage()

{

clearmem();

for (int i=0;i

{

for (int j=0;j

{

*(image_out+i*m_imagex+j )=255-*(image_in+i*m_imagex+j);

}

}

Invalidate();

} 数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云

3、对数函数变换

对数函数变换的一般表达式:

g(x,y)=c*log(f(x,y)+1)

其中c为一常数。此种变换使一窄带低灰度输入图像值映射为一宽带输出值。可以利用这种变换来扩展被压缩的高值图像中的暗像素。例如傅里叶频谱图像中,频谱值的范围从0到106甚至更高,计算机图像显示系统通常不能如实显示如此大范围的强度值,很多细节会在典型的傅里叶频谱显示时丢失。

添加菜单项”对数增强变换”,并添加菜单事件处理函数OnImagelog()

void CDynSplitView::OnImagelog()

{

// TODO: 在此添加命令处理程序代码

int i,j,nf; 数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云 int c=50;

clearmem();

for (j=0;j

{

for(i=0;i

{

nf=(int)(c*log((double)(*(image_in+j*m_imagex+i)+1)));

if(nf>255)

nf=255;

*(image_out+j*m_imagex+i)=(BYTE)nf;

}

}

Invalidate();

}

傅里叶频谱图像

c=50效果图 数字图像处理技术---图像增强

江西农业大学软件学院-----杨红云

4、幂次变换

幂次变换的基本形式:

g(x,y)=c*f(x,y)γ

其中c和γ为常数。与对数变换的情况类似,幂次变换中的γ的部分值把输入窄带暗值映射到宽带输出值。当γ=1时简化为正比变换。 γ>1与γ<1的值产生的曲线有相反的效果。实现部分自己编程完成。

5、线性灰度增强

对比度展宽的目的是:通过将亮暗差异(即对比度)扩大,来把人所关心的部分强调出来。

原理是,进行像素点对点的,灰度级的线性映射。该映射关系通过调整参数,来实现对亮暗差异的扩大。

实现方法:

设原图、处理后的结果图的灰度值分别为[f(i,j)] 和[g(i,j)];

要求[g(i,j)]和[f(i,j)]均在[0,255]间变化,但是g的表现效果要优于f。

因为f和g的取值范围相同,所以通过