model = double(model); [xlen ylen] = size(model); edgeX = zeros(xlen,ylen); edgeY = zeros(xlen,ylen); edgeXY = zeros(xlen,ylen); H1 = [-1 0 1;-2 0 2;-1 0 1]; H2 = [-1 -2 -1;0 0 0;1 2 1]; for i = 1:xlen for j = 1:ylen for m = 1:3 for n = 1:3
updateX = i-m+2; updateY = j-n+2;
if ((updateX>=1) && (updateX<=xlen) && (updateY>=1) (updateY<=ylen))
edgeX(i,j) = edgeX(i,j) + H1(m,n)*model(updateX,updateY); edgeY(i,j) = edgeY(i,j) + H2(m,n)*model(updateX,updateY); end end end end end
edgeX = abs(edgeX); edgeY = abs(edgeY);
edgeXY = edgeX.*edgeX + edgeY.*edgeY;
threshold = 4.0*sum(sum(edgeXY(2:xlen-1,2:ylen-1)))/((xlen-2)*(ylen-2)); for i = 2:xlen-1 for j = 2:ylen-1
if (edgeXY(i,j)>threshold) edgeimage(i,j) = 1; else
edgeimage(i,j) = 0; end end end
edgeimage = mat2gray(edgeimage); subplot(1,2,2);
imshow(edgeimage);
title('sobel算子的边缘检测');
&&
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- fupindai.com 版权所有 赣ICP备2024042792号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务