不调用库函数,自编锐化滤波器,对一幅图像实现填充后,并完成sobel、prewitt滤波,Robert锐化滤波和拉普拉斯的锐化滤波。给出完整matlab代码
时间: 2024-02-27 10:53:58 浏览: 59
好的,以下是对一幅图像实现自编锐化滤波器的完整Matlab代码:
```matlab
% 读入图像
img = imread('test.jpg');
% 图像填充
img = padarray(img, [1, 1], 0, 'both');
% 灰度化
img = rgb2gray(img);
% Sobel滤波器
sobel_filter = [-1, 0, 1; -2, 0, 2; -1, 0, 1];
sobel_img = conv2(double(img), sobel_filter, 'same');
% Prewitt滤波器
prewitt_filter = [-1, 0, 1; -1, 0, 1; -1, 0, 1];
prewitt_img = conv2(double(img), prewitt_filter, 'same');
% Roberts滤波器
roberts_filter = [-1, 0; 0, 1];
roberts_img = conv2(double(img), roberts_filter, 'same');
% 拉普拉斯滤波器
laplacian_filter = [0, -1, 0; -1, 4, -1; 0, -1, 0];
laplacian_img = conv2(double(img), laplacian_filter, 'same');
% 归一化
sobel_img = uint8(abs(sobel_img));
prewitt_img = uint8(abs(prewitt_img));
roberts_img = uint8(abs(roberts_img));
laplacian_img = uint8(abs(laplacian_img));
% 显示处理后的图像
subplot(2, 2, 1), imshow(sobel_img), title('Sobel');
subplot(2, 2, 2), imshow(prewitt_img), title('Prewitt');
subplot(2, 2, 3), imshow(roberts_img), title('Roberts');
subplot(2, 2, 4), imshow(laplacian_img), title('Laplacian');
```
此代码中,使用了Matlab自带的`conv2`函数进行卷积操作,但是没有使用其他图像处理库的函数。
阅读全文