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获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1770万
展开全部
原因是: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);
按上面语句试试
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式