
Matlab图像处理中运用区域二值,输出图像全黑的问题..
[a,b]=size(input);fori=1:a/32forj=1:b/32operatingRegion=input(32*(i-1)+1:32*i,32*(j-1...
[a,b] = size(input);
for i = 1:a/32
for j = 1:b/32
operatingRegion = input (32*(i-1)+1:32*i,32*(j-1)+1:32*j);
thresh = graythresh(operatingRegion);
operatingRegion = im2bw (operatingRegion, thresh);
input (32*(i-1)+1:32*i,32*(j-1)+1:32*j) = operatingRegion;
end
end
imshow(input);
刚刚接触matlab,想做个提取图片中特定信息的程序。input为一张灰度图,想法基本上是把图像分成若干32×32的区块,各自使用Ostu阈值分割确定阈值,二值化之后把该区块填回原图。然而结果是一片黑...简单测试以后发现貌似是这里开始出问题input (32*(i-1)+1:32*i,32*(j-1)+1:32*j) = operatingRegion;。请问是什么原因?怎么解决这个问题呢? 展开
for i = 1:a/32
for j = 1:b/32
operatingRegion = input (32*(i-1)+1:32*i,32*(j-1)+1:32*j);
thresh = graythresh(operatingRegion);
operatingRegion = im2bw (operatingRegion, thresh);
input (32*(i-1)+1:32*i,32*(j-1)+1:32*j) = operatingRegion;
end
end
imshow(input);
刚刚接触matlab,想做个提取图片中特定信息的程序。input为一张灰度图,想法基本上是把图像分成若干32×32的区块,各自使用Ostu阈值分割确定阈值,二值化之后把该区块填回原图。然而结果是一片黑...简单测试以后发现貌似是这里开始出问题input (32*(i-1)+1:32*i,32*(j-1)+1:32*j) = operatingRegion;。请问是什么原因?怎么解决这个问题呢? 展开
1个回答
展开全部
原因是:operatingRegion = im2bw (operatingRegion, thresh);得的数据是0和1,所以,input (32*(i-1)+1:32*i,32*(j-1)+1:32*j)也是0和1,而imshow(input)显示的范围是[0,255],1/255近似于0,所以,全显示为黑色。我给你改下:
[a,b] = size(input);
for i = 1:a/32
for j = 1:b/32
operatingRegion = input (32*(i-1)+1:32*i,32*(j-1)+1:32*j);
thresh = graythresh(operatingRegion);
operatingRegion = im2bw (operatingRegion, thresh);
input (32*(i-1)+1:32*i,32*(j-1)+1:32*j) = operatingRegion*255;
end
end
imshow(input);
按上面语句试试
[a,b] = size(input);
for i = 1:a/32
for j = 1:b/32
operatingRegion = input (32*(i-1)+1:32*i,32*(j-1)+1:32*j);
thresh = graythresh(operatingRegion);
operatingRegion = im2bw (operatingRegion, thresh);
input (32*(i-1)+1:32*i,32*(j-1)+1:32*j) = operatingRegion*255;
end
end
imshow(input);
按上面语句试试
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |