clear;
sourcePic=imread('E:\光学相关识别\神经网络相关识别\picture\j20.jpg');%读取原图像
grayPic=mat2gray(sourcePic);%实现图像矩阵的归一化操作
[m,n]=size(grayPic);
grayPic = imnoise(grayPic,'speckle',0.004); %给图像加入噪声 0.1为可以修改的参数
newGrayPic=grayPic;%为保留图像的边缘一个像素
sobelNum=0;%经sobel算子计算得到的每个像素的值
sobelThreshold=0.8;%设定阈值
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
figure,imshow(newGrayPic);
title('Sobel算子的处理结果')
%% 存txt
%for i=1:256
newGrayPic(1,:)=0;
newGrayPic(256,:)=0;
newGrayPic(:,1)=0;
newGrayPic(:,256)=0;
%end
[r,c]=size(newGrayPic);
fid=fopen('E:\光学相关识别\神经网络相关识别\picture\j20_sobel.txt','wt');
for i=1:r
for j=1:c
fprintf(fid,'%d\t ',newGrayPic(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);