function sobel
pic=imread('1.jpg');
data=rgb2gray(pic); %转化为灰度图
figure,imshow(data);
title('原图');
[m,n]=size(data); %返回图像的大小
data1=ones(m,n);
data2=ones(m,n);
data3=ones(m,n);
data4=ones(m,n);
% mhori=[1 2 1;0 0 0;-1 -2 -1];
% mvert=mhori'; % sobel算子
mhori=fspecial('sobel');
mvert=mhori';
for i=2:m-1
for j=2:n-1 %遍历元素
part=data(i-1:i+1,j-1:j+1); %取图像的一部分
part=double(part);
temp1=part.*mhori;
temp2=part.*mvert; %图像的部分与模板对应元素相乘
data1(i,j)=sum(sum(temp1));
data2(i,j)=sum(sum(temp2)); %求相乘的和
end
end
figure,imshow(uint8(data1));
title('图像的水平边缘');
figure,imshow(uint8(data2));
title('图像的垂直边缘');
data3=data1+data2; %水平与垂直叠加
figure,imshow(uint8(data3));
title('图像的水平与垂直边缘叠加');
data4=double(data3)+double(data);
figure,imshow(double(data4));
title('图像边缘与原图叠加');
pic=imread('1.jpg');
data=rgb2gray(pic); %转化为灰度图
figure,imshow(data);
title('原图');
[m,n]=size(data); %返回图像的大小
data1=ones(m,n);
data2=ones(m,n);
data3=ones(m,n);
data4=ones(m,n);
% mhori=[1 2 1;0 0 0;-1 -2 -1];
% mvert=mhori'; % sobel算子
mhori=fspecial('sobel');
mvert=mhori';
for i=2:m-1
for j=2:n-1 %遍历元素
part=data(i-1:i+1,j-1:j+1); %取图像的一部分
part=double(part);
temp1=part.*mhori;
temp2=part.*mvert; %图像的部分与模板对应元素相乘
data1(i,j)=sum(sum(temp1));
data2(i,j)=sum(sum(temp2)); %求相乘的和
end
end
figure,imshow(uint8(data1));
title('图像的水平边缘');
figure,imshow(uint8(data2));
title('图像的垂直边缘');
data3=data1+data2; %水平与垂直叠加
figure,imshow(uint8(data3));
title('图像的水平与垂直边缘叠加');
data4=double(data3)+double(data);
figure,imshow(double(data4));
title('图像边缘与原图叠加');