matlab图像边缘提取
时间: 2023-10-10 10:14:18 浏览: 92
用matlab提取图像边缘
在MATLAB中,常用的图像边缘提取方法有Sobel算子、Prewitt算子、Canny算子等。
下面以Sobel算子为例,介绍MATLAB中的图像边缘提取方法:
1. 读取图像
```matlab
img = imread('example.jpg');
```
2. 灰度化
```matlab
gray_img = rgb2gray(img);
```
3. Sobel算子边缘提取
```matlab
sobel_x = [-1 0 1; -2 0 2; -1 0 1];
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1];
img_sobel_x = imfilter(double(gray_img), sobel_x);
img_sobel_y = imfilter(double(gray_img), sobel_y);
img_sobel = sqrt(img_sobel_x.^2 + img_sobel_y.^2);
```
4. 显示结果
```matlab
imshow(img_sobel, []);
```
其中,sobel_x和sobel_y是Sobel算子的横向和纵向卷积核,通过imfilter函数进行卷积计算,得到图像的梯度信息。最后,通过sqrt函数计算梯度大小,得到图像的边缘信息。
需要注意的是,使用imfilter函数进行卷积计算时,需要将图像转换为double类型,以避免数据精度损失。另外,imshow函数中的[]参数可以自动调整图像的显示范围,使图像的灰度值覆盖整个显示范围。
阅读全文