日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Matlab实现图像边缘检测

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab实现图像边缘检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

邊緣檢測

為了在一幅圖像 f 的(x,y)位置尋找邊緣的強度和方向,所選擇的工具就是梯度,梯度使用向量來表示:

該向量指出了圖像 f 在位置(x,y)處的最大變化率的方向,梯度向量的大小表示為:

它是梯度向量方向變化率的值。
梯度向量的方向表示為:

梯度算子

roberts算子:

sobel算子:
prewitt算子:

Matlab實現

function output = my_edge(input_img,method)
if size(input_img,3)==3input_img=rgb2gray(input_img);
endinput_img=im2double(input_img);
sobel_x=[-1,-2,-1;0,0,0;1,2,1];
sobel_y=[-1,0,1;-2,0,2;-1,0,1];
prewitt_x=[-1,-1,-1;0,0,0;1,1,1];
prewitt_y=[-1,0,1;-1,0,1;-1,0,1];psf=fspecial('gaussian',[5,5],1);
input_img=imfilter(input_img,psf);%高斯低通濾波,平滑圖像,但可能會使圖像丟失細節
input_img=medfilt2(input_img); %中值濾波消除孤立點
[m,n]=size(input_img);
output=zeros(m,n);
if nargin==2if strcmp(method,'sobel')for i=2:m-1for j=2:n-1local_img=input_img(i-1:i+1, j-1:j+1);
%近似邊緣檢測,加快速度    %output(i,j)=abs(sum(sum(sobel_x.*local_img)))+abs(sum(sum(sobel_x.*local_img)));output(i,j)=sqrt(sum(sum(sobel_x.*local_img))^2+sum(sum(sobel_y.*local_img))^2);endendelseif strcmp(method,'prewitt')for i=2:m-1for j=2:n-1local_img=input_img(i-1:i+1, j-1:j+1);output(i,j)=sqrt(sum(sum(prewitt_x.*local_img))^2+sum(sum(prewitt_y.*local_img))^2);endendelseerrordlg('maybe you should input sobel or prewitt');end
else  %如果不輸入算子的名稱,默認使用roberts算子進行邊緣檢測for i=1:m-1for j=1:n-1output(i,j)=abs(input_img(i,j)-input_img(i+1,j+1))+ ...abs(input_img(i+1,j)-input_img(i,j+1));endend
endoutput=imadjust(output);%使邊緣圖像更明顯
thresh=graythresh(output);%確定二值化閾值
output=bwmorph(im2bw(output,thresh),'thin',inf);%強化細節
end

代碼效果:

總結

以上是生活随笔為你收集整理的Matlab实现图像边缘检测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。