利用M代码用 sobel算子prewitt 算子log 算子对图进行锐化处理
时间: 2023-09-05 13:10:44 浏览: 114
图像锐化MATLAB实现(包含laplacian算子、Prewitt算子、Robert算子、sobel算子)
以下是利用 MATLAB 的 Image Processing Toolbox 实现 Sobel、Prewitt和LoG算子对图像进行锐化处理的示例代码:
```matlab
% 读取原始图像
img = imread('lena.png');
% Sobel算子锐化
sobel_filter = [-1 0 1; -2 0 2; -1 0 1];
sobel_img = imfilter(img, sobel_filter);
sobel_img = imadjust(sobel_img, [0 1], [0 255]);
% Prewitt算子锐化
prewitt_filter = [-1 0 1; -1 0 1; -1 0 1];
prewitt_img = imfilter(img, prewitt_filter);
prewitt_img = imadjust(prewitt_img, [0 1], [0 255]);
% LoG算子锐化
log_filter = fspecial('log', [5 5], 0.5);
log_img = imfilter(img, log_filter);
log_img = imadjust(log_img, [0 1], [0 255]);
% 显示结果
figure;
subplot(2, 2, 1); imshow(img); title('原始图像');
subplot(2, 2, 2); imshow(sobel_img); title('Sobel算子锐化');
subplot(2, 2, 3); imshow(prewitt_img); title('Prewitt算子锐化');
subplot(2, 2, 4); imshow(log_img); title('LoG算子锐化');
```
在这个示例代码中,我们首先读取了一张名为 'lena.png' 的图像,然后分别定义了 Sobel、Prewitt和LoG算子的卷积核,利用 `imfilter` 函数对原始图像进行卷积操作,最后使用 `imadjust` 函数将卷积结果的像素值范围映射到 0-255 的范围内,以便于显示。最后,我们将原始图像和三种锐化结果以 2x2 的子图形式显示出来。
阅读全文