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;。请问是什么原因?怎么解决这个问题呢?
展开
 我来答
我行我素850915
推荐于2016-03-28 · TA获得超过8245个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1880万
展开全部
原因是: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);
按上面语句试试
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式