第三章图像增强.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的取值范围相同,所以通过