1.程序功能描述
基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真,对比不同的参数对OBNLM算法的影响。
2.测试软件版本以及运行结果展示
MATLAB2022A版本运行
3.核心程序
Im0 = imread('test.png'); Blks1 = 3; Blks2 = 5; Blks3 = 7; Wins = 17; Gblk = 2; h = 5; Im0 = double(Im0); Vmax = 255; Vmin = 0; Imax = max(max(Im0)); Io = 0; Idiff = Imax - Io; Vd = (Vmax - Vmin)/Idiff; Im0 = (Im0 - Io) * Vd + Vmin; Im0 = uint8(Im0); Im1 = func_Bayes(Im0, Blks1, Wins, Gblk, h); Im2 = func_Bayes(Im0, Blks2, Wins, Gblk, h); Im3 = func_Bayes(Im0, Blks3, Wins, Gblk, h); figure subplot(221) imshow(Im0) title('原图') subplot(222) imshow(Im1) title('OBNLM处理后图像,block=3*3') subplot(223) imshow(Im2) title('OBNLM处理后图像,block=5*5') subplot(224) imshow(Im3) title('OBNLM处理后图像,block=7*7') Im0 = imread('test.png'); Blks1 = 3; Wins1 = 13; Wins2 = 17; Wins3 = 21; Gblk = 2; h = 5; Im0 = double(Im0); Vmax = 255; Vmin = 0; Imax = max(max(Im0)); Io = 0; Idiff = Imax - Io; Vd = (Vmax - Vmin)/Idiff; Im0 = (Im0 - Io) * Vd + Vmin; Im0 = uint8(Im0); Im1a = func_Bayes(Im0, Blks1, Wins1, Gblk, h); Im2a = func_Bayes(Im0, Blks1, Wins2, Gblk, h); Im3a = func_Bayes(Im0, Blks1, Wins3, Gblk, h); figure subplot(221) imshow(Im0) title('原图') subplot(222) imshow(Im1a) title('OBNLM处理后图像,Win=13*13') subplot(223) imshow(Im2a) title('OBNLM处理后图像,Win=17*17') subplot(224) imshow(Im3a) title('OBNLM处理后图像,Win=21*21') 53
4.本算法原理
分块贝叶斯非局部均值优化(Optimized Block-Based Non-local Means, OBNLM)是一种高级图像去噪技术,它在经典非局部均值(Non-local Means, NLM)算法的基础上引入了块的概念和贝叶斯统计理论,以提高去噪效率和保真度。OBNLM不仅考虑了图像中像素间的相似性,还通过块匹配和概率模型来优化相似块的加权融合,从而更精准地恢复图像细节。非局部均值算法的基本思想是认为图像中的某个像素不仅仅与其周围的像素有关系,还可能与图像中远离它的、具有相似结构的其他像素相关。OBNLM在此基础上进一步提出,将图像分割成多个块,并在块级别上寻找相似性,这不仅减少了计算复杂度,还能有效捕捉大范围的图像结构信息。
4.1 块定义与相似度计算
4.2 贝叶斯框架下的加权融合
4.3 加权最小均方误差估计
实际计算中,直接求解上述最小化问题计算复杂度高,因此OBNLM采用近似方法,如快速搜索策略和分块的迭代更新机制,减少计算量。同时,为了处理边缘区域和块边界问题,常采用边界扩展或镜像填充等技术。
标签:subplot,图像去噪,imshow,title,OBNLM,Im0,Gblk,matlab From: https://www.cnblogs.com/softcodes/p/18658381