Prewitt算子边缘检测matlab代码
时间: 2024-06-09 07:06:40 浏览: 17
以下是Prewitt算子边缘检测的MATLAB代码:
```matlab
% 读入图像
im = imread('lena.png');
% 将图像转化为灰度图
im = rgb2gray(im);
% 显示原始图像
subplot(2,2,1),imshow(im),title('原始图像');
% 计算Prewitt算子
hx = [-1,0,1;-1,0,1;-1,0,1];
hy = [-1,-1,-1;0,0,0;1,1,1];
imx = conv2(double(im),hx,'same');
imy = conv2(double(im),hy,'same');
imxy = sqrt(imx.*imx + imy.*imy);
% 显示Prewitt算子处理后的图像
subplot(2,2,2),imshow(imxy,[]),title('Prewitt算子处理后');
% 二值化处理
imbw = imbinarize(imxy,graythresh(imxy));
% 显示二值化后的图像
subplot(2,2,3),imshow(imbw),title('二值化处理后');
% 边缘提取处理
imedge = edge(im,'Prewitt');
% 显示边缘提取后的图像
subplot(2,2,4),imshow(imedge),title('边缘提取处理后');
```
其中,首先读入图像并将其转化为灰度图像。然后计算Prewitt算子,生成水平和竖直方向的梯度值,最后将两个方向的梯度值平方和开方,得到边缘强度图像。接着,将边缘强度图像二值化处理,并使用MATLAB自带的`edge`函数进行边缘提取处理。最后,将原始图像、Prewitt算子处理后的图像、二值化处理后的图像以及边缘提取后的图像显示在四个子图中。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)