LOG滤波器提取边缘_第1页
LOG滤波器提取边缘_第2页
LOG滤波器提取边缘_第3页
LOG滤波器提取边缘_第4页
LOG滤波器提取边缘_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、LOG 滤波器提取边缘实验报告朱俊 0220080198实验内容1 用 LOG 滤波器提取图像边缘2 比较直接滤波和先缩小原图进行滤波再插补的乘法次数实验原理1 LOG 滤波器原理设I(x,y)代表灰度变化,灰度变化剧烈的地方就是阶跃点,而阶跃点的一 次微商为极大值,二次微商为零。因此二次微商为零的地方就是图像的边缘 所在。LOG滤波器是高斯(GAUSS)滤波和拉普拉斯(LAPLACIAN)滤波的结合, 即先用高斯滤波器进行平滑滤波,以过虑调噪声,再提取边缘,所以效果较好。2 LOG 滤波器的缺点与解决方法由于 LOG 滤波器的模板宽度一般较大,所以 LOG 滤波缩要进行的计算 量也相应较大。

2、设图像尺寸为NXM,模板宽度为KXK,则对整幅图进行 卷积的乘法次数为(N-K+l) *(M-K+)*K*K,当N和MK时,所用的乘法 次数约为N*M*K*K。可见乘法次数和模板宽度的平方成正比。事实上, LOG 滤波器可以分解成一只高斯滤波器和另一只模板宽度更小 的 LOG 滤波器。另外,由于高斯滤波器是低通的而且可分解的的,所以。 可以把原图尺寸缩小后再进行滤波,滤波结束后再进行插补,这样可以大大 减少所要做的工作量。程序设计程序基于 MFC 的单文档界面,增加一个位图包裹类(设计模式的适配器模 式)来封装对位图的操作,增加一个滤波类来进行通用的滤波操作。程序结构如下:类定义如下:位图包裹

3、类:class CWrapBitmappublic:long GetSize();/接口:得到位图大小,成功返回阵列大小,失败返回 falseint GetHeight();/接口:得到位图高度,成功返回高度,失败返回 falseint GetWidthBytes(); /接口:得到位图比特宽度,成功返回宽度,失败返回 false int GetWidth();/接口:得到位图实际宽度,成功返回宽度,失败返回 falseBYTE* GetpBuffer();/接口:得到位图阵列指针,成功返回指针,失败返回 NULLCBitmap* GetpBitmap();/接口: 得到 CBitmap 类指

4、针. 成功返回指针,失败返回 NULLBOOL Save(LPCTSTR lpszPathName);接口:保存位图文件.成功返回true,失败返回falseBOOL Load(LPCTSTR lpszPathName);接口:打开位图文件.成功返回true,失败返回falseCWrapBitmap();virtual CWrapBitmap();private:BYTE* m_pBuffer;/位图阵列指针CBitmap m_Bitmap;/位图类HBITMAP m_hBitmap; /打开位图指针protected:HANDLE DDBToDIB(CBitmap &bitmap, DWOR

5、D dwCompression, CPalette *pPal); /DDB2DIB;滤波器类:const int TEMPLATE_LOG =1;/LOG 滤波器const int TEMPLATE_LAPLACIAN=2; /拉普拉斯滤波器(锐化)const int TEMPLATE_GAUSS =3;/Gauss 滤波器(平滑)class CFilterpublic:long GetCount(); /接口:得到滤波所用的乘法次数BOOL Filter(const int nDefTemplate,BYTE *pBuffer, DWORD Size,DWORDWidth, DWORD H

6、eight);接口:对二维数组(阵列)滤波.成功返回true,失败返回falseCFilter();virtual CFilter(); private:virtual CFilter(); private:long m_lCount;float m_fCoef;BYTE m_TemplateWidth;/记录滤波所用的乘法次数/模板系数/模板宽度char* m_pTemplate;/模板指针protected:BYTE CutOverflow(float fNum); /截取超出范围的数字void Multiply(BYTE* pBuffer,DWORD Size,DWORD Width,D

7、WORD Height); /模板和阵列的操作void SetTemplate(const int nDefTemplate); /设置模板的参数;实验结果与分析实验采取如下图一的灰度图片,图片大小170X375,模板选为5X5,如下 所示: -2,-4,-4,-4,-2,-4, 0, 8, 0,-4,-4, 8,24, 8,-4,-4, 0, 8, 0,-4,-2,-4,-4,-4,-2经一次 LOG 滤波得结果图二,所用得乘法次数为 1539650,经验证可知 1539650=(1705 + 1)X(3755 + 1)X5X5,符合前面所推导公式。若先把原图缩小到一半大小(85X188),

8、再经过高斯滤波,和LOG滤波, 再插补到原图大小,得结果图三。所用乘法次数为 517816,其中高斯滤波用乘 法次数 140616=(85 + 1 3 + 1)X(188 3 + 1)X3X3,LOG 滤波用乘法次 数 377200=(85 + 1 5 + 1)X(188-5+1)X5X5。显然大大减少了乘法次数。图一(原图) 图二(LOG滤波结果)图三(滤波后插补结果)附关键源程序BOOL CFilter:Filter(const int nDefTemplate,BYTE *pBuffer,DWORD Size,DWORD Width, DWORD Height)SetTemplate(n

9、DefTemplate); if(!pBuffer)/Buf 为空return false;if(Width+16)*HeightSize) /非 8 位色彩的位图 /MYTODO:转化到8位AfxMessageBox(不支持非256色位图); /return false; Multiply(pBuffer,Size,Width,Height); return true;void CFilter:SetTemplate(const int nDefTemplate) if(m_pTemplate)delete m_pTemplate;switch(nDefTemplate)case TEMPL

10、ATE_LOG: m_TemplateWidth=5;m_fCoef=1;BYTE btTemplateSize=m_TemplateWidth*m_TemplateWidth; m_pTemplate=new charbtTemplateSize; char btTemp25=-2,-4,-4,-4,-2,-4, 0, 8, 0,-4,-4, 8,24, 8,-4,-4, 0, 8, 0,-4, -2,-4,-4,-4,-2; :memcpy(m_pTemplate,&btTemp,btTemplateSize);break;case TEMPLATE_LAPLACIAN:m_Templat

11、eWidth=3;m_fCoef=1;BYTE btTemplateSize=m_TemplateWidth*m_TemplateWidth; m_pTemplate=new charbtTemplateSize;char btTemp9=-1,-1,-1,-1,9,-1,-1,-1,-1;:memcpy(m_pTemplate,&btTemp,btTemplateSize);break;case TEMPLATE_GAUSS:m_TemplateWidth=3;m_fCoef=l/16.0;不能 1/16,否则会变成 0BYTE btTemplateSize=m_TemplateWidth*

12、m_TemplateWidth; m_pTemplate=new charbtTemplateSize;char btTemp9=1,2,1,2,4,2,1,2,1;:memcpy(m_pTemplate,&btTemp,btTemplateSize);break;default:TRACE(没有该默认的模板);void CFilter:Multiply(BYTE *pBuffer, DWORD Size, DWORD Width, DWORD Height)int nBorder=m_TemplateWidth/2; /需要空开的大小DWORD dwOffset=0;float fResult=0;int nTempNum=0;BYTE* pTempBuffer=new BYTESize;for(DWORD y=0+nBorder;yHeight-nBorder;y+) /因为窗口中心点要受模板 大小影响for(DWORD x=0+nBorder;xWidth-nBorder;x+)dwOffset=Size-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论