您现在的位置:首页 >> 图像处理 >> 内容

图像的双边滤波matlab仿真

时间:2023/1/3 22:49:51 点击:

  核心提示:A177,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y52clZlp

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

       双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点。双边滤波器的好处是可以做边缘保存(edge preserving),一般过去用的维纳滤波或者高斯滤波去降噪,都会较明显地模糊边缘,对于高频细节的保护效果并不明显。

4.部分源码

Img    =  double( imread('./images/ckb.jpg') );

[m, n] = size(Img);

% create noisy image (additive Gaussian noise)

sigma  =  20;

inImg  =  Img + sigma * randn(m, n);

% filter parameters

sigma1 = 4;

sigma2 = 30;

tol        = 0.01;

% Set window for spatial Gaussian

w  = 6*sigma1;

if (mod(w,2) == 0)

    w  = w+1;

end

% call bilateral filter

tic;

[outImg, param] =  shiftableBF(inImg, sigma1, sigma2, w, tol);

toc;

% plot results

T  = param.T;

N  = param.N;

M  = param.M;

gamma  =  1 / (sqrt(N) * sigma2);

twoN   =  2^N;

warning('off'); %#ok<WNOFF>

s  = linspace(-T, T, 200);

g  = exp( -s.^2 / (2 * sigma2 *sigma2) );

gApprox  = cos(gamma * s).^N;

if M ==  0

    gTrunc = gApprox;

else

    gTrunc = zeros( 1, length(s) );

    for k = M : N - M

        gTrunc = gTrunc + (nchoosek(N, k) / twoN) * ...

            cos( (2*k - N) * gamma * s  );

    end

end

 

figure('Units','normalized','Position',[0 0.5 1 0.5]);

plot(s, g, 'b');

hold on,

plot(s, gApprox, 'm'),

hold on,

plot(s, gTrunc, 'r');

axis('tight'), grid('on'),

legend('Gassian','Raised cosine','Truncated raised cosine','FontSize', 10);

title('Comparison of the range kernels', 'FontSize', 10),

peak  = 255;

PSNR0 = 10 * log10(m * n * peak^2 / sum(sum( (inImg - Img).^2)) );

PSNR1 = 10 * log10(m * n * peak^2 / sum(sum((outImg - Img).^2)) );

A177

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168