典的TV变分法图像去噪的C++实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
典的TV变分法图像去噪的C实现

典的变分法图像去噪的C++实现 由于这学期的图像处理课程的大作业需要写一个图像处理程序,不能使用古典的线性滤波,或者基于频域(小波)或者基于统计之类的方法。只能用老师讲过的一些方法,诸如变分,PDE,微分几何等。。感觉上简单的变分法稍微要好实现一些,就打算基于最早的TV图像去噪模型,做一个VC的实现。但是找遍了网上也没有TV去噪的C++源码,与之只好自己动手写了。 关于变分法和泛函分析的一些基础原理今天就先不多说了,TV图像去噪经典论文:《Nonlinear Total Variation based noise removal algorithms》Google上可以搜得到。 关于Matlab的程序实现,有一个经典的主页: http://visl.technion.ac.il/~gilboa/PDE-filt/tv_denoising.html 下面是一个Matlab代码实现:复制到记事本用matlab打开就可以运行,要注意图像的名称和路径要对应。如果只是想学学算法思路或者看看处理效果的话,只需要Matlab的代码就行了。 function?J=tv(I,iter,dt,ep,lam,I0,C) %%?Private?function:?tv?(by?Guy?Gilboa). %%?Total?Variation?denoising. %%?Example:?J=tv(I,iter,dt,ep,lam,I0) %%?Input:?I????-?image?(double?array?gray?level?1-256), %%????????iter?-?num?of?iterations, %%????????dt???-?time?step?[0.2], %%????????ep???-?epsilon?(of?gradient?regularization)?[1], %%????????lam??-?fidelity?term?lambda?[0], %%????????I0???-?input?(noisy)?image?[I0=I] %%???????(default?values?are?in?[]) %%?Output:?evolved?image clc clear I=imread(grids.bmp);?%?load?image I?=?double(I); if?~exist(ep) ???ep=1; end if?~exist(dt) ???dt=ep/5;??%?dt?below?the?CFL?bound end if?~exist(lam) ???lam=0; end if?~exist(I0) ????I0=I; end if?~exist(C) ????C=0; end [ny,nx]=size(I);?ep2=ep^2; %?params iter=80;? for?i=1:iter,??%%?do?iterations ???%?estimate?derivatives ???I_x?=?(I(:,[2:nx?nx])-I(:,[1?1:nx-1]))/2; ????I_y?=?(I([2:ny?ny],:)-I([1?1:ny-1],:))/2; ????I_xx?=?I(:,[2:nx?nx])+I(:,[1?1:nx-1])-2*I; ????I_yy?=?I([2:ny?ny],:)+I([1?1:ny-1],:)-2*I; ????Dp?=?I([2:ny?ny],[2:nx?nx])+I([1?1:ny-1],[1?1:nx-1]); ????Dm?=?I([1?1:ny-1],[2:nx?nx])+I([2:ny?ny],[1?1:nx-1]); ????I_xy?=?(Dp-Dm)/4; ???%?compute?flow ???Num?=?I_xx.*(ep2+I_y.^2)-2*I_x.*I_y.*I_xy+I_yy.*(ep2+I_x.^2); ???Den?=?(ep2+I_x.^2+I_y.^2).^(3/2); ???I_t?=?Num./Den?+?lam.*(I0-I+C); ???I=I+dt*I_t;??%%?evolve?image?by?dt end?%?for?i %%?return?image %J=I*Imean/mean(mean(I));?%?normalize?to?original?mean J=I; figure(1);?imshow(uint8(I0));?title(Noisy?image); %?denoise?image?by?using?tv?for?some?iterations figure(2);?im

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档