本帖最后由 兔子mm 于 2018-4-3 21:40 编辑

前面的大段代码都没有问题,当进行到对膨胀后的图片进行腐蚀的最后一段代码时出现图片全黑情况,求前辈告知最后的代码问题出现在哪里

A=imread('D:\MATLAB\甘蔗图片\test.jpg');

figure,imshow(A);

title('原图');

J=rgb2gray(A);

figure,imshow(J);

title('灰度处理后');

load tire;

subplot(221);

image(J);

%colormap(map);       %画出原图像

init=2055615866;

randn('seed',init);

J=double(J);

x=J+38*randn(size(J));

subplot(222);

image(x);

%colormap(map);

axis  square;

[c,s]=wavedec2(x,2,'sym4');

a1=wrcoef2('a',c,s,'sym4',1);     %第一次低通滤波消噪

subplot(223);

image(a1);

title('第一次消噪后');

axis square;

a2=wrcoef2('a',c,s,'sym4',2);

subplot(224);

image(a2);

title('第二次消噪后');

axis square;

PF=edge(a2,'sobel','vertical');%边缘探测,算子为垂直sobel

figure,imshow(PF),title('vertical');

[VSFAT, Threshold]=edge(a2,'sobel','Horizontal');%边缘水平检测

figure,imshow(VSFAT),title('Horizontal'); %显示边缘水平检测图像

SFST=edge(a2,'sobel',Threshold);%使用水平和垂直Sobel算子,自动选择阈值

figure,imshow(SFST),title('Horizontal and Vertical');%显示边缘检测图像

se=strel('disk',2);

VSFAT=double(imdilate(VSFAT,se));

VSFAT([1:3 end-0:2],:)=0;

VSFAT(:,[1:3 end-0:2])=0;

figure,imshow(VSFAT);

title('Weight array');

se0=strel('line',3.5,0);%线,长度为3.5,角度为0度

se90=strel('line',30,90);

BWl=imerode(VSFAT,[se90 ,se0]);%腐蚀

figure,imshow(BWl);

BW2=imdilate(BWl,se90);%膨胀

figure,imshow(BW2);

前面几段代码运行结果都是没问题的,只有最后一段代码运行后的两个figure是完全黑色的图片。

而且第一次运行是正常的,之后再运行就全黑了。我处理的图片在附件中。并没有出现报错。

用的是64位R2014a版本,电脑64位win10.

技术渣渣希望前辈们不要觉得我蠢,谢谢啦。

更多推荐