欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    高斯模糊实现小结.docx

    • 资源ID:3254557       资源大小:441.49KB        全文页数:19页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    高斯模糊实现小结.docx

    1、高斯模糊实现小结高斯模糊实现小结高斯模糊是一种图像滤波器,它使用正态分布(高斯函数)计算模糊模板,并使用该模板与原图像做卷积运算,达到模糊图像的目的。N维空间正态分布方程为:其中,是正态分布的标准差,值越大,图像越模糊(平滑)。r为模糊半径,模糊半径是指模板元素到模板中心的距离。如二维模板大小为m*n,则模板上的元素(x,y)对应的高斯计算公式为:在二维空间中,这个公式生成的曲面的等高线是从中心开始呈正态分布的同心圆。分布不为零的像素组成的卷积矩阵与原始图像做变换。每个像素的值都是周围相邻像素值的加权平均。原始像素的值有最大的高斯分布值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权

    2、重也越来越小。这样进行模糊处理比其它的均衡模糊滤波器更高地保留了边缘效果。理论上来讲,图像中每点的分布都不为零,这也就是说每个像素的计算都需要包含整幅图像。在实际应用中,在计算高斯函数的离散近似时,在大概3距离之外的像素都可以看作不起作用,这些像素的计算也就可以忽略。通常,图像处理程序只需要计算(6+1)*(6+1)的矩阵就可以保证相关像素影响。1、使用给定高斯模板平滑图像函数=0.84089642的7行7列高斯模糊矩阵为:现使用该模板对源图像做模糊处理,其函数如下:cppviewplaincopy1. /高斯平滑2. /未使用sigma,边缘无处理3. voidGaussianTemplat

    3、eSmooth(constMat&src,Mat&dst,doublesigma)4. 5. /高斯模板(7*7),sigma=0.84089642,归一化后得到6. staticconstdoublegaussianTemplate77=7. 8. 0.00000067,0.00002292,0.00019117,0.00038771,0.00019117,0.00002292,0.00000067,9. 0.00002292,0.00078633,0.00655965,0.01330373,0.00655965,0.00078633,0.00002292,10. 0.00019117,0.

    4、00655965,0.05472157,0.11098164,0.05472157,0.00655965,0.00019117,11. 0.00038771,0.01330373,0.11098164,0.22508352,0.11098164,0.01330373,0.00038771,12. 0.00019117,0.00655965,0.05472157,0.11098164,0.05472157,0.00655965,0.00019117,13. 0.00002292,0.00078633,0.00655965,0.01330373,0.00655965,0.00078633,0.00

    5、002292,14. 0.00000067,0.00002292,0.00019117,0.00038771,0.00019117,0.00002292,0.0000006715. ;16. 17. dst.create(src.size(),src.type();18. uchar*srcData=src.data;19. uchar*dstData=dst.data;20. 21. for(intj=0;jsrc.cols-7;j+)22. 23. for(inti=0;isrc.rows-7;i+)24. 25. doubleacc=0;26. doubleaccb=0,accg=0,a

    6、ccr=0;27. for(intm=0;m7;m+)28. 29. for(intn=0;n0?sigma:0;8. /高斯核矩阵的大小为(6*sigma+1)*(6*sigma+1)9. /ksize为奇数10. intksize=cvRound(sigma*3)*2+1;11. 12. /dst.create(src.size(),src.type();13. if(ksize=1)14. 15. src.copyTo(dst);16. return;17. 18. 19. dst.create(src.size(),src.type();20. 21. /计算高斯核矩阵22. doub

    7、le*kernel=newdoubleksize*ksize;23. 24. doublescale=-0.5/(sigma*sigma);25. constdoublePI=3.141592653;26. doublecons=-scale/PI;27. 28. doublesum=0;29. 30. for(inti=0;iksize;i+)31. 32. for(intj=0;jksize;j+)33. 34. intx=i-(ksize-1)/2;35. inty=j-(ksize-1)/2;36. kerneli*ksize+j=cons*exp(scale*(x*x+y*y);37

    8、. 38. sum+=kerneli*ksize+j;39. /coutkerneli*ksize+j;40. 41. /cout=0;i-)45. 46. *(kernel+i)/=sum;47. 48. /图像卷积运算,无边缘处理49. for(intj=0;jsrc.cols-ksize;j+)50. 51. for(inti=0;isrc.rows-ksize;i+)52. 53. doubleacc=0;54. 55. for(intm=0;mksize;m+)56. 57. for(intn=0;nksize;n+)58. 59. acc+=*(srcData+src.step*(

    9、i+n)+src.channels()*(j+m)*kernelm*ksize+n;60. 61. 62. 63. 64. *(dstData+dst.step*(i+(ksize-1)/2)+(j+(ksize-1)/2)=(int)acc;65. 66. 67. deletekernel;68. 利用该函数,取=0.84089642即可得到上例中7*7的模板,该模板数据存在kernel中。利用该函数计算的归一化后的3*3,5*5阶高斯模板如表2,3所示:由上表可以看出,高斯模板是中心对称的。模糊效果如图2所示。对图2中边缘的处理:cppviewplaincopy1. .cppviewpla

    10、incopy1. intcenter=(ksize-1)/2;2. /图像卷积运算,处理边缘3. for(intj=0;jsrc.cols;j+)4. 5. for(inti=0;isrc.rows;i+)6. 7. doubleacc=0;8. 9. for(intm=-center,c=0;m=center;m+,c+)10. 11. for(intn=-center,r=0;n=0&(i+n)=0&(j+m)0?sigma:-sigma;8. /高斯核矩阵的大小为(6*sigma+1)*(6*sigma+1)9. /ksize为奇数10. intksize=ceil(sigma*3)*2

    11、+1;11. 12. /coutksize=ksizeendl;13. /dst.create(src.size(),src.type();14. if(ksize=1)15. 16. src.copyTo(dst);17. return;18. 19. 20. /计算一维高斯核21. double*kernel=newdoubleksize;22. 23. doublescale=-0.5/(sigma*sigma);24. constdoublePI=3.141592653;25. doublecons=1/sqrt(-scale/PI);26. 27. doublesum=0;28. i

    12、ntkcenter=ksize/2;29. inti=0,j=0;30. for(i=0;iksize;i+)31. 32. intx=i-kcenter;33. *(kernel+i)=cons*exp(x*x*scale);/一维高斯函数34. sum+=*(kernel+i);35. 36. /cout*(kernel+i);37. 38. /coutendl;39. /归一化,确保高斯权值在0,1之间40. for(i=0;iksize;i+)41. 42. *(kernel+i)/=sum;43. /cout*(kernel+i);44. 45. /coutendl;46. 47.

    13、dst.create(src.size(),src.type();48. Mattemp;49. temp.create(src.size(),src.type();50. 51. uchar*srcData=src.data;52. uchar*dstData=dst.data;53. uchar*tempData=temp.data;54. 55. /x方向一维高斯模糊56. for(inty=0;ysrc.rows;y+)57. 58. for(intx=0;xsrc.cols;x+)59. 60. doublemul=0;61. sum=0;62. doublebmul=0,gmul=

    14、0,rmul=0;63. for(i=-kcenter;i=0&(x+i)src.cols)66. 67. if(src.channels()=1)68. 69. mul+=*(srcData+y*src.step+(x+i)*(*(kernel+kcenter+i);70. 71. else72. 73. bmul+=*(srcData+y*src.step+(x+i)*src.channels()+0)*(*(kernel+kcenter+i);74. gmul+=*(srcData+y*src.step+(x+i)*src.channels()+1)*(*(kernel+kcenter+i);75. rmul+=*(srcData+y*src.step+(x+i)*src.channels()+2)*(*(kernel+kcenter+i);76. 77. sum+=(*(kernel+kcenter+i);78. 79. 80. if(src.channels()=1)81. 82. *(tempData+y*temp.step+x)=mul/sum;83. 84. else85. 86. *(tempData+y*te


    注意事项

    本文(高斯模糊实现小结.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开