双边滤波matlab代码
时间: 2023-10-11 11:09:57 浏览: 36
双边滤波(Bilateral Filter)是一种非线性滤波技术,可以同时考虑空间距离和像素值之间的相似性,保留图像边缘的同时平滑图像。在Matlab中,可以使用下面的代码实现双边滤波:
```matlab
function [out] = bilateral_filter(img, sigma_d, sigma_r)
% 双边滤波
% 输入:img-待滤波的图像,sigma_d-空间域标准差,sigma_r-像素值域标准差
% 输出:out-滤波后的图像
% 将图像转换为double类型
img = im2double(img);
% 计算图像的行列数
[height, width] = size(img);
% 初始化输出图像
out = zeros(height, width);
% 计算空间域权值矩阵
[x, y] = meshgrid(-ceil(sigma_d):ceil(sigma_d));
spatial_kernel = exp(-(x.^2+y.^2)/(2*sigma_d^2));
% 对图像进行扩展,以便于处理边缘
extended_img = padarray(img, [ceil(sigma_d), ceil(sigma_d)], 'replicate');
% 对每个像素进行滤波处理
for i = 1:height
for j = 1:width
% 获取当前像素的窗口
window = extended_img(i:i+2*ceil(sigma_d), j:j+2*ceil(sigma_d));
% 计算像素值域权值矩阵
pixel_kernel = exp(-(window - img(i, j)).^2/(2*sigma_r^2));
% 计算总的权值矩阵
kernel = spatial_kernel .* pixel_kernel;
% 对当前像素进行加权平均
out(i, j) = sum(sum(kernel .* window))/sum(sum(kernel));
end
end
% 将输出图像转换为uint8类型
out = im2uint8(out);
end
```
使用方法:
```matlab
img = imread('lena.png');
out = bilateral_filter(img, 3, 0.1);
imshow(out);
```
相关推荐
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)