BM3D的学习与Matlab实现「建议收藏」

BM3D的学习与Matlab实现「建议收藏」                    BM3D的学习与Matlab的实现      BM3D是2007年TIP的文章,题目是《ImageDenoisingbySparse3-DTransform-DomainCollaborativeFiltering》。最近想尝试一下图像去噪,看看能否应用到项目中,顺便测试了一下效果,结果不…

大家好,又见面了,我是你们的朋友全栈君。

                                        BM3D的学习与Matlab的实现

 

         BM3D是2007年TIP的文章,题目是《Image Denoising by Sparse 3-D Transform-Domain Collaborative Filtering》。最近想尝试一下图像去噪,看看能否应用到项目中,顺便测试了一下效果,结果不是太理想,主要问题是时间,去噪效果还是可以的。担心以后找起来(实现)麻烦,就当做个笔记了。

1、论文篇

(1)    http://www.cs.tut.fi/~foi/GCF-BM3D/

(2) 《Comments on “Image Denoising by Sparse 3-D Transform-Domain Collaborative Filtering”

(3) 《An Analysis and Implementation of the BM3D Image Denoising Method

 

2、代码下载

(1)  Github搜索BM3D:https://github.com/search?q=BM3D&type=Repositories,选择Matlab版本

(2)  官网http://www.cs.tut.fi/~foi/GCF-BM3D/(含源码与测试图)

(3)  官网demohttp://demo.ipol.im/demo/l_bm3d/

 

3、原理(感谢下面几位博主的奉献)

(1)  BM3D(Block-Matching and 3D filtering)读后感

(2)   图像去噪算法原理-待完善

(3)  图像去噪重要文献整理(二)BM3D / LSSC

 

4、工程实现(以Matlab为例)

(1)  先看官网的demo,具体步骤如下:

BM3D的学习与Matlab实现「建议收藏」

BM3D的学习与Matlab实现「建议收藏」

BM3D的学习与Matlab实现「建议收藏」

(2)  运行官网提供的代码BM3D.m文件:               

 先上结果,这是论文中的结果,效果确实好:

BM3D的学习与Matlab实现「建议收藏」

(3)  自己测试一张图像时:

BM3D的学习与Matlab实现「建议收藏」

测试代码:

%% demo
clear all;clc;close all;

img = imread('noise.png');  % 测试图像,可更改
if length(size(img)) > 2
    img = rgb2gray(img);
end

figure(1),imshow(img);
y = im2double(img);
% randn('seed',0);
sigma=25/255;
z=y+sigma*randn(size(y));

y_est = BM3DSAPCA2009(z,sigma);
figure(2),imshow(y_est);

disp('end!');
%% performance evaluation
PSNR = 10*log10(1/mean((y(:)-y_est(:)).^2));
disp(['PSNR = ',num2str(PSNR)])
if exist('ssim_index')
    [mssim ssim_map] = ssim_index(y*255, y_est*255);
    disp(['SSIM = ',num2str(mssim)]);
end

        这张图的运行时间64s!!!没办法,效果确实是好,但是时间真心不短,(又想马儿想得快,又想马儿不吃草,哈哈)。BM3D的复杂之处在于,首先找相似块,其次是采用了两次block-wise estimate,复杂度相比NLM翻了1倍,且含有域变换操作,具体原理见上面的博客链接。类似其中一位博友所说,尽管计算机性能已经成百上千倍地提高,还是远不能满足很多算法的实时计算的需求,这很大程度上限制了这些算法的使用范围:用户无法处理一张照片需要等待长达几分钟的时间,因此,距离真正意义上的实用还是有一段距离。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133866.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VBScript教程-第二章. 运行脚本

    VBScript教程-第二章. 运行脚本因为过年,一直没有更新教程.发现按照这个进度得下个世纪能完成我这宏伟的小计划,所以最近我会加快进度.好多人问我学习方法,其实真的是学习没有捷径.最后说一句,学习脚本最好准备一份帮助文档,vbs就下载script56.chm这个文件就行了.=========================万恶的分割线后开始正题=====================…

    2022年6月17日
    19
  • 继电器驱动电路使用笔记「建议收藏」

    继电器驱动电路使用笔记「建议收藏」在参加立创开源社区的暑假d物联网比赛中需要使用mcu控制继电器,我采用的是技新课堂的继电器电路,但是翻车了最后使用里零妖的继电器驱动方案。零妖阿里云插座文档:https://www.yuque.com/lingyao/oshwhub/fp69nm立创暑期训练营文档:https://www.yuque.com/iiyqfa/ssdag4/pwdyeo智能插座的开源工程(包含继电器部分):https://oshwhub.com/7a745fc8/ke-shang-yong-wu-lian-wang-kai

    2022年6月24日
    24
  • 密码暴力激活成功教程与防御

    密码暴力激活成功教程与防御密码暴力激活成功教程与防御密码安全概述漏洞利用权限管理不安全的密码默认密码弱口令裤子密码猜解思路字典专门字典python暴力激活成功教程BurpSuite暴力激活成功教程LowMediumHighBp其他攻击模式Impossible如何防御暴力激活成功教程其他暴力激活成功教程工具wfuzzpiachuHydraMudusaMSF密码安全概述加密、完整性、身份认证存储安全、传输安全、输入安全漏洞利用从数据库获取密码窃听通信数据直接从登录框猜测数据权限管理认证:你是谁?授权:你能做什么?不安全的密码默认密码0000001

    2022年8月22日
    7
  • 武侠世界2-健壮性

    前几周就获得的武侠世界2的源代码,一直没有时间表去看。从网上搞来的武侠世界2的源代码,能编译通过,大的问题没有,小问题还是挺多。其它的细节,大家其实可以在网上搜索一下。下面的游戏运行的截图:我还把角色升到2级呢,废话少说,直奔主题。1、在windows下代码的健壮性打开World.sln,工程的main函数在World.cpp里面。开始部分我们能看到#ifdefined(…

    2022年4月1日
    43
  • 常用网络图片url地址「建议收藏」

    常用网络图片url地址「建议收藏」http://www.baidu.com/img/bdlogo.pnghttp://rongcloud-web.qiniudn.com/docs_demo_rongcloud_logo.png

    2022年7月1日
    315

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号