ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:118KB ,
资源ID:969892      下载积分:15 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-969892.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LOG滤波器提取边缘报告.DOC)为本站会员(天***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

LOG滤波器提取边缘报告.DOC

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

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

3、包裹类 滤波器类位图数据滤波后的位图数据视图类显示类定义如下:位图包裹类:class CWrapBitmappublic:long GetSize(); /接口:得到位图大小,成功返回阵列大小,失败返回 falseint GetHeight(); /接口:得到位图高度,成功返回高度,失败返回 falseint GetWidthBytes(); /接口:得到位图比特宽度,成功返回宽度,失败返回 falseint GetWidth(); /接口:得到位图实际宽度,成功返回宽度,失败返回 falseBYTE* GetpBuffer();/接口:得到位图阵列指针,成功返回指针,失败返回 NULLCBi

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

5、指针protected:HANDLE DDBToDIB(CBitmap /DDB2DIB;滤波器类:const int TEMPLATE_LOG =1; /LOG 滤波器const int TEMPLATE_LAPLACIAN=2; /拉普拉斯滤波器(锐化)const int TEMPLATE_GAUSS =3; /Gauss 滤波器(平滑)class CFilter public:long GetCount(); /接口:得到滤波所用的乘法次数BOOL Filter(const int nDefTemplate,BYTE *pBuffer, DWORD Size,DWORD Width, D

6、WORD Height);/接口: 对二维数组(阵列)滤波. 成功返回 true,失败返回 falseCFilter();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,DWORD Height);

7、/模板和阵列的操作void SetTemplate(const int nDefTemplate);/设置模板的参数;四 实验结果与分析实验采取如下图一的灰度图片,图片大小 170375,模板选为 55,如下所示: -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(17051)(37551)55,符合前面所推导公式。若先把原图缩小到一半大小(85188) ,再经过高斯滤波,和 LOG 滤波,再插补到原图大小

8、,得结果图三。所用乘法次数为 517816,其中高斯滤波用乘法次数 140616(85131)(18831)33,LOG 滤波用乘法次数 377200(85151)(188-5+1)55。显然大大减少了乘法次数。图一(原图) 图二(LOG 滤波结果) 图三(滤波后插补结果)五 附关键源程序BOOL CFilter:Filter(const int nDefTemplate,BYTE *pBuffer,DWORD Size,DWORD Width, DWORD Height)SetTemplate(nDefTemplate);if(!pBuffer)/Buf 为空return false;if(

9、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 TEMPLATE_LOG:m_TemplateWidth=5;m_fCoef=1;BYTE btTempl

10、ateSize=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,break;case TEMPLATE_LAPLACIAN:m_TemplateWidth=3;m_fCoef=1;BYTE btTemplateSize=m_TemplateWidth*m_TemplateWidth;m_pTem

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

12、,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;y255.0)return (BYTE)255;else if(fNum0.0)return (BYTE)0;elsereturn (BYTE)fNum;long CFilter:GetCount()return m_lCount;学生:朱俊 0220080198

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。