clear all; close all;
I = imread('rice.png');
I = im2double(I);
h = [0, 1, 0; 1, -4, 1; 0, 1, 0];
J = conv2(I, h, 'same');
K = I - J;
figure;
subplot(121);
imshow(I);
title('Original Image');
subplot(122);
imshow(K);
title('Edge Enhanced Image');
解释:
-
clear all; close all;
:清空工作空间中的所有变量并关闭所有图形窗口。 -
I = imread('rice.png');
:读取名为rice.png
的图像,并赋值给I
。 -
I = im2double(I);
:将图像I
的数据类型转换为双精度浮点数,以便进行后续处理。 -
h = [0, 1, 0; 1, -4, 1; 0, 1, 0];
:创建一个3x3的滤波器核h
,这是一个简单的边缘检测核。 -
J = conv2(I, h, 'same');
:使用滤波器核h
对图像I
进行二维卷积运算,并使用'same'
选项保持输出图像与输入图像大小相同。 -
K = I - J;
:计算原始图像I
和卷积结果J
之间的差值,得到边缘增强的图像K
。 -
figure;
:创建一个新的图形窗口。 -
subplot(121); imshow(I);
:在第一个子图(1,2,1)中显示原始图像I
。 -
subplot(122); imshow(K);
:在第二个子图(1,2,2)中显示边缘增强的图像K
。
拓展:
- 保存边缘增强的图像:可以将边缘增强的图像
K
保存为文件。
% 保存边缘增强的图像
imwrite(uint8(K), 'rice_edge_enhanced.png');
-
尝试不同的边缘检测核:可以尝试使用不同的边缘检测核,如Sobel算子、Prewitt算子等,来观察不同的边缘检测效果。
-
调整边缘检测核的参数:可以调整边缘检测核的参数,比如改变核的大小或权重,来优化边缘检测的结果。
-
应用边缘检测后的图像:可以将边缘增强的图像用于后续的图像处理任务,如图像分割、目标检测等。
-
创建交互式边缘检测器:可以创建一个交互式界面,允许用户选择不同的边缘检测核和参数,并实时查看边缘检测效果。