拉普拉斯图像的理解 拉普拉斯算子图像增强

5.5.2 拉普拉斯掩模锐化(1)

1.基本理论

拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性。一个二维图像函数 的拉普拉斯变换是各向同性的二阶导数,定义为:

(5-11)


为了更适合于数字图像处理,将该方程表示为离散形式:

(5-12)

另外,拉普拉斯算子还可以表示成模板的形式,如图5-9所示。图5-9(a)表示离散拉普拉斯算子的模板,图5-9(b)表示其扩展模板,图5-9(c)则分别表示其他两种拉普拉斯的实现模板。从模板形式容易看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算就会使这个亮点变得更亮。因为图像中的边缘就是那些灰度发生跳变的区域,所以拉普拉斯锐化模板在边缘检测中很有用。一般增强技术对于陡峭的边缘和缓慢变化的边缘很难确定其边缘线的位置。但此算子却可用二次微分正峰和负峰之间的过零点来确定,对孤立点或端点更为敏感,因此特别适用于以突出图像中的孤立点、孤立线或线端点为目的的场合。同梯度算子一样,拉普拉斯算子也会增强图像中的噪声,有时用拉普拉斯算子进行边缘检测时,可将图像先进行平滑处理。

图5-9拉普拉斯的4种模板


图像锐化处理的作用是使灰度反差增强,从而使模糊图像变得更加清晰。图像模糊的实质就是图像受到平均运算或积分运算,因此可以对图像进行逆运算,如微分运算能够突出图像细节,使图像变得更为清晰。由于拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。因此,锐化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像。拉普拉斯锐化的基本方法可以由下式表示:

这种简单的锐化方法既可以产生拉普拉斯锐化处理的效果,同时又能保留背景信息,将原始图像叠加到拉普拉斯变换的处理结果中去,可以使图像中的各灰度值得到保留,使灰度突变处的对比度得到增强,最终结果是在保留图像背景的前提下,突现出图像中小的细节信息。

2.算法实现

CImgEnhance类中的成员函数LapTemplate()实现拉普拉斯锐化操作,在对灰度图像进行梯度锐化时直接调用LapTemplate()函数即可。以下是LapTemplate()函数的代码实现。

 
void CImgEnhance::LapTemplate(int
inputH, int inputW, int inputX0, int
inputY0, float *pTemplate, float f)
{
unsigned char *pSrc, *pDst;
inti,j,k,l;
floatvalue;

if(m_pImgDataOut != NULL)
{
delete []m_pImgDataOut;
m_pImgDataOut = NULL;
}
int lineByte = (m_imgWidth *
m_nBitCount / 8 + 3) / 4 * 4;

if(m_nBitCount != 8)
{
AfxMessageBox("只能处理8位灰度图像!");
return ;
}
//创建要复制的图像区域
m_nBitCountOut = m_nBitCount;
int lineByteOut = (m_imgWidth *
m_nBitCountOut / 8 + 3) / 4 * 4;
if (!m_pImgDataOut)
{
m_pImgDataOut = new unsigned char
[lineByteOut * m_imgHeight];
}

int pixelByte = m_nBitCountOut / 8;
for(i = 0; i < m_imgHeight; i++){
for(j = 0; j < m_imgWidth * pixelByte; j++)
*(m_pImgDataOut + i * lineByteOut + j)
= *(m_pImgData + i * lineByteOut + j);
}

//行处理
for (i = inputY0; i < m_imgHeight -
inputH + inputY0 + 1; i++)
{
//列处理
for (j = inputX0; j
inputW + inputX0 + 1; j++)
{
//指向新DIB第i行第j列像素的指针
pDst = m_pImgDataOut + lineByte *
(m_imgHeight -1 - i) + j;

value=0;
//计算
for (k = 0; k < inputH; k++)
{
for (l = 0; l < inputW; l++)
{
pSrc = m_pImgData + lineByte *
(m_imgHeight - 1 - i + inputY0 - k)+ j - inputX0 + l;
//计算加权平均
value += (*pSrc) * pTemplate[k * inputW + l];
}
}
//乘以系数
value *= f;
//取结果的绝对值
value = (float)fabs(value);
if (value > 255)
{
*pDst = 255;
}
else
{
*pDst = (unsigned char)(value+0.5);
}
}
}
}

5.5.2拉普拉斯掩模锐化(2)

3.函数调用

在视图类CDemoView中映射“拉普拉斯锐化”事件的处理函数:OnLaplacienSharp(),以下是CDemoView:::OnLaplacienSharp()函数的代码实现。

voidCDemoView::OnLaplacienSharp()
{
CDemoDoc*pDoc=GetDocument();
ImgCenterDib*pDib=pDoc->GetPDib();

if(pDib->m_nBitCount!=8&{
::MessageBox(0,"只处理灰度图像",MB_OK,0);
return ;
}
CImgEnhanceimgnoise(pDib->GetDimensions(),pDib->m_nBitCount,
pDib->m_lpColorTable,pDib->m_pImgData);
int TempH, TempW, TempCX,TempCY;
float fCoef;
float Temp[9];
//设模板为平均模板
Temp[0]=-1.0;
Temp[1]=-1.0;
Temp[2]=-1.0;
Temp[3]=-1.0;
Temp[4]=9.0;
T[5]=-1.0;
T[6]=-1.0;
T[7]=-1.0;
T[8]=-1.0;
//初始化对话框变量
TH=3;
TW=3;
TCX=1;
TCY=1;
fCoef=1.0;
imgnoise.LapTlate(TH,TW,TCX,TCY,T,fCoef);

CMainFrame* pFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);
pFrame->SendMessage(WM_COMMAND,ID_FILE_NEW);

CDemoView*pView=(CDemoView*)pFrame->MDIGetActive()->GetActiveView();
CDemoDoc*pDocNew=pView->GetDocument();
ImgCenterDib*dibNew=pDocNew->GetPDib();

dibNew->ReplaceDib(imgnoise.GetDimensions(),imgnoise.m_nBitCountOut,imgnoise.m_lpColorTable,imgnoise.m_pImgDataOut);
pDocNew->SetModifiedFlag(TRUE);
pDocNew->UpdateAllViews(pView);

Invalidate();
}

4.实验结果与分析

图5-10(a)显示了一幅花朵的图片,图5-10(b)显示了用图5-9(a)所示的拉普拉斯模板对该图像滤波后的结果。由图可以看出,将原始图像通过拉普拉斯变换后增强了图像中灰度突变处的对比度,使图像中小的细节部分得到增强并保留了图像的背景色调,使图像的细节比原始图像更加清晰。基于拉普拉斯变换的图像增强已成为图像锐化处理的基本工具。

图5-10拉普拉斯方法的锐化结果

5.6本章小结

本章主要介绍了几种图像的空域增强方法及其每种方法的基本原理,在程序中用类CImgEnhance实现了图像添加噪声和常用的图像增强的算法。本章从不同角度介绍了图像中噪声的来源和模型,以及如何计算信噪比及编程实现随机噪声和椒盐噪声的添加,为研究后续的图像平滑和滤波方法奠定基础。本章还简要介绍了图像的灰度修正方法,其中包括灰度校正、灰度变换及直方图修正;详细介绍了图像的空间域平滑方法,包括邻域平均法、加权平均法和选择式掩模平滑法;介绍了传统中值滤波方法和一种适合并行实现的快速中值滤波方法;在“图像的锐化”一节中重点介绍了两种微分锐化方法:梯度锐化方法和拉普拉斯掩模锐化方法。上述方法都给出了相应的实验结果,便于读者根据不同的应用场合和应用需求选择合适的算法。

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/200611.html

更多阅读

苏轼《卜算子》赏析 卜算子苏轼朗读

《卜算子》(黄州定惠院寓居作)缺月挂疏桐,漏断人初静,谁见幽人独住来,飘渺孤鸿影。惊起却回头,有恨无人省,拣尽寒枝不肯栖,寂寞沙洲冷。这首词的大意是:一弯如钩之月挂在苍穹,透过稀疏斑驳的梧桐,洒下些朦胧的月光来。漏声停了,万籁俱静。没

教你如何简单的“屈指一算” 教你如何简单判断行情

教你如何简单的“屈指一算”首先,伸出你的左手,拇指放一边,注意看食、中、无名、小指,每只手指都有三节,若再加上山丘,知道山丘是哪里吗?就是指头接到手掌那块微微秃出小肉块,这样就有四节了,用右手拿支水性笔,在左手食指最上一节写上“巳”,中

你懂什么叫“算子”吗? 什么叫算子

所以广义的讲,对任何函数进行某一项操作都可以认为是一个算子,甚至包括求幂次,开方都可以认为是一个算子,只是有的算子我们用了一个符号来代替他所要进行的运算罢了,所以大家看到算子就不要纠结,他和f(x)的f没区别,它甚至和加减乘除的基本

IE 默认网关 子网掩码 DNS的填法 ipv4子网掩码默认网关

IP地址的结构 要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机

声明:《拉普拉斯图像的理解 拉普拉斯算子图像增强》为网友轰炸女王分享!如侵犯到您的合法权益请联系我们删除