边缘提取
prewitt算子
function newGrayPic = myprewitt(grayPic, a)
[m,n]=size(grayPic);
newGrayPic=grayPic;
PrewittThreshold=a;%设定阈值
for j=2:m-1 %进行边界提取
for k=2:n-1
PrewittNum=abs(grayPic(j-1,k+1)-grayPic(j+1,k+1)+grayPic(j-1,k)-grayPic(j+1,k)+grayPic(j-1,k-1)-grayPic(j+1,k-1))+abs(grayPic(j-1,k+1)+grayPic(j,k+1)+grayPic(j+1,k+1)-grayPic(j-1,k-1)-grayPic(j,k-1)-grayPic(j+1,k-1));
if(PrewittNum > PrewittThreshold)
newGrayPic(j,k)=255;
else
newGrayPic(j,k)=0;
end
end
end
roberts算子
function newGrayPic = myroberts (grayPic, a)
[m,n]=size(grayPic);
newGrayPic=grayPic;
robertThreshold=a;
for j=1:m-1
for k=1:n-1
robertsNum = abs(grayPic(j,k)-grayPic(j+1,k+1)) + abs(grayPic(j+1,k)-grayPic(j,k+1));
if(robertsNum > robertThreshold)
newGrayPic(j,k)=255;
else
newGrayPic(j,k)=0;
end
end
end
BW2 = newGrayPic;
sobel算子
function newGrayPic = mysobel2 (grayPic,a)
[m,n]=size(grayPic);
newGrayPic=grayPic;
sobelThreshold=a;
for j=2:m-1
for k=2:n-1
sobelNum=abs(grayPic(j-1,k+1)+2*grayPic(j,k+1)+grayPic(j+1,k+1)-grayPic(j-1,k-1)-2*grayPic(j,k-1)-grayPic(j+1,k-1))+abs(grayPic(j-1,k-1)+2*grayPic(j-1,k)+grayPic(j-1,k+1)-grayPic(j+1,k-1)-2*grayPic(j+1,k)-grayPic(j+1,k+1));
if(sobelNum > sobelThreshold)
newGrayPic(j,k)=255;
else
newGrayPic(j,k)=0;
end
end
end
laplacian算子
function newGrayPic = mylaplacian(grayPic,LaplacianThreshold)
[m,n]=size(grayPic);
newGrayPic=grayPic;
for j=2:m-1 %进行边界提取
for k=2:n-1
LaplacianNum=abs(4*grayPic(j,k)-grayPic(j-1,k)-grayPic(j+1,k)-grayPic(j,k+1)-grayPic(j,k-1));
if(LaplacianNum > LaplacianThreshold)
newGrayPic(j,k)=255;
else
newGrayPic(j,k)=0;
end
end
end