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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [gdc15]<暗黑破坏神3>中的合作模式设计

    [gdc15]<暗黑破坏神3>中的合作模式设计本文中,kevin老师分享暗黑设计团队从游戏的早期一直到现在夺魂之镰资料片,一路过来的探索,纠结和沉淀。最后能逐渐把设计做的更好(有的地方大幅度的简化,不纠结,有些地方则有所增强),kevin老师建立在对于D3本质的认知上,产生了一系列的哲学和原则。

    2022年6月2日
    40
  • html初识

    web服务的本质importsocketdefmain():sock=socket.socket(socket.AF_INET,sock.SOCK_STREAM)sock.blind((&

    2022年3月29日
    79
  • 无人驾驶安全报告分析

    摘要随着经济的快速发展,各国汽车保有量急剧增加,促使城市路况更加严峻繁杂,城市交通正面临着前所未有的巨大压力。加之疲劳驾驶、酒后驾驶等人为因素,使世界各国的交通事故率逐年上升,甚至多于世界大战死亡人数。随着汽车技术、信息通信技术与智能控制技术的高效融合,集自动控制、人工智能、体系结构视觉设计等众多技术于一体的无人驾驶汽车应运而生。通过在车辆内安装智能操纵控制系统与感应设备来获取信息用以控制车…

    2022年4月7日
    41
  • oracle 10g数据库连接时,错误ora12514 解决办法

    oracle 10g数据库连接时,错误ora12514 解决办法主要注意三点:1。在oracle安装目录下,..\oracle\product\10.2.0\db_1\NETWORK\ADMIN修改listener.ora文件,SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = PLSExtProc)      (ORACLE_HOME = D:\oracle

    2022年7月15日
    38
  • python强制删除文件夹_python删除文件夹下的文件保留但清空子文件夹

    python强制删除文件夹_python删除文件夹下的文件保留但清空子文件夹importosimportshutil#删除文件夹下的文件&&保留但清空子文件夹defdel_file(filepath):print(“hello”)listdir=os.listdir(filepath)#获取文件和子文件夹print(listdir)fordirnameinlistdir:dirname=filepath+”//”+dir…

    2022年5月18日
    43
  • java程序设计图书管理系统源码(java图书管理系统设计报告)

    图书管理系统需实现的功能如下:(1)用户管理:包括用户的注册于登录。(2)图书管理:包括录入、查询、修改和删除图书信息。(3)借书:包括借阅图书和查看借书记录。(4)还书:包括还书和查看还书记录。(5)为了保证系统安全,进入系统时,对用户登录的密码进行加密与解密。源码、课程设计报告、数据库表图的百度网盘链接:https://pan.baidu.com/s…

    2022年4月12日
    84

发表回复

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

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