img = imread('image.jpg'); img_gray = rgb2gray(img); [m, n] = size(img_gray); mask = ones(3, 3) / 9;
时间: 2024-05-19 17:13:54 浏览: 24
filtered_image = conv2(double(img_gray), mask, 'same');
This code snippet reads in an image "image.jpg", converts it to grayscale, and then creates a 3x3 averaging mask. The conv2 function is then used to convolve the image with the mask to perform a 2D spatial filtering operation, resulting in a filtered_image. The 'same' argument in the conv2 function ensures that the output image is the same size as the input image.
相关问题
熟练使用空域均值、锐化滤波器和频域均值、锐化滤波器对一幅灰度图像进行滤波处理,给出完整matlab代码
以下是使用空域均值、锐化滤波器和频域均值、锐化滤波器对一幅灰度图像进行滤波处理的完整Matlab代码:
```matlab
% 加载灰度图像
img = imread('lena.jpg');
img_gray = rgb2gray(img);
% 空域均值滤波器
kernel = ones(5,5)/25;
dst1 = imfilter(img_gray, kernel);
% 空域锐化滤波器
kernel = [-1,-1,-1;-1,9,-1;-1,-1,-1];
dst2 = imfilter(img_gray, kernel);
% 频域均值滤波器
dft = fft2(double(img_gray));
dft_shift = fftshift(dft);
[M, N] = size(img_gray);
crow = fix(M/2);
ccol = fix(N/2);
mask = zeros(M, N);
mask(crow-30:crow+30, ccol-30:ccol+30) = 1;
fshift = dft_shift.*mask;
f_ishift = ifftshift(fshift);
img_back = ifft2(f_ishift);
img_back = abs(img_back);
dst3 = uint8(img_back);
% 频域锐化滤波器
dft = fft2(double(img_gray));
dft_shift = fftshift(dft);
[M, N] = size(img_gray);
crow = fix(M/2);
ccol = fix(N/2);
mask = ones(M, N);
mask(crow-30:crow+30, ccol-30:ccol+30) = 0;
fshift = dft_shift.*mask;
f_ishift = ifftshift(fshift);
img_back = ifft2(f_ishift);
img_back = abs(img_back);
dst4 = uint8(img_back);
% 显示原图和四种滤波结果
subplot(2,3,1),imshow(img_gray),title('Original Image');
subplot(2,3,2),imshow(dst1),title('Spatial Domain Mean Filtered Image');
subplot(2,3,3),imshow(dst2),title('Spatial Domain Sharpened Image');
subplot(2,3,5),imshow(dst3),title('Frequency Domain Mean Filtered Image');
subplot(2,3,6),imshow(dst4),title('Frequency Domain Sharpened Image');
```
在这段代码中,首先使用`imread()`函数加载一张彩色图像,然后使用`rgb2gray()`函数将其转换为灰度图像。然后分别定义了一个空域均值滤波器`kernel`和一个空域锐化滤波器`kernel`。接着使用`imfilter()`函数对图像进行空域均值滤波和空域锐化滤波。然后使用`fft2()`函数对图像进行傅里叶变换,并使用`fftshift()`函数将频域零频分量移到频域图像的中心。接着定义了一个掩膜`mask`,使用一个矩形将零频分量的周围区域置为1,其余区域置为0,从而实现了频域均值滤波。将掩膜`mask`中的1和0交换,即可得到频域锐化滤波器,使用这个掩膜对频域图像进行处理后,再使用`ifft2()`函数进行傅里叶逆变换,得到处理后的图像。最后使用`subplot()`函数将原图和四种滤波结果显示在同一个窗口中。
matlab编程实现图像的空域平滑和锐化
空域平滑:
1. 均值滤波
```matlab
img = imread('image.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转换为灰度图像
[m, n] = size(img_gray); % 获取图像大小
% 均值滤波模板
mask = ones(3, 3) / 9;
% 边界处理,采用镜像对称扩展
img_pad = padarray(img_gray, [1 1], 'symmetric');
% 进行滤波操作
img_smooth = zeros(m, n);
for i = 1:m
for j = 1:n
img_smooth(i, j) = sum(sum(img_pad(i:i+2, j:j+2) .* mask));
end
end
% 显示结果
imshow(uint8(img_smooth));
```
2. 中值滤波
```matlab
img = imread('image.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转换为灰度图像
[m, n] = size(img_gray); % 获取图像大小
% 中值滤波模板大小
mask_size = 3;
% 边界处理,采用镜像对称扩展
img_pad = padarray(img_gray, [1 1], 'symmetric');
% 进行滤波操作
img_smooth = zeros(m, n);
for i = 1:m
for j = 1:n
% 获取模板内像素值
mask_values = img_pad(i:i+mask_size-1, j:j+mask_size-1);
% 对像素值进行排序,取中间值作为滤波结果
img_smooth(i, j) = median(mask_values(:));
end
end
% 显示结果
imshow(uint8(img_smooth));
```
空域锐化:
1. 拉普拉斯算子
```matlab
img = imread('image.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转换为灰度图像
[m, n] = size(img_gray); % 获取图像大小
% 拉普拉斯算子模板
mask = [0 -1 0; -1 4 -1; 0 -1 0];
% 边界处理,采用镜像对称扩展
img_pad = padarray(img_gray, [1 1], 'symmetric');
% 进行滤波操作
img_sharp = zeros(m, n);
for i = 1:m
for j = 1:n
img_sharp(i, j) = sum(sum(img_pad(i:i+2, j:j+2) .* mask));
end
end
% 显示结果
imshow(uint8(img_sharp));
```
2. Sobel算子
```matlab
img = imread('image.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转换为灰度图像
[m, n] = size(img_gray); % 获取图像大小
% Sobel算子模板
mask_x = [-1 0 1; -2 0 2; -1 0 1];
mask_y = [-1 -2 -1; 0 0 0; 1 2 1];
% 边界处理,采用镜像对称扩展
img_pad = padarray(img_gray, [1 1], 'symmetric');
% 计算图像x方向和y方向梯度
grad_x = zeros(m, n);
grad_y = zeros(m, n);
for i = 1:m
for j = 1:n
grad_x(i, j) = sum(sum(img_pad(i:i+2, j:j+2) .* mask_x));
grad_y(i, j) = sum(sum(img_pad(i:i+2, j:j+2) .* mask_y));
end
end
% 计算梯度幅值
grad_mag = sqrt(grad_x.^2 + grad_y.^2);
% 显示结果
imshow(uint8(grad_mag));
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)