im1 = grayscale images
im2 = im2bw(im1, graythresh)
我是否可以叠加im1
和im2
根据指定的im1
间隔来获取包含im2
和graylevel
功能的第3张图片?
例如,我选择110到120之间的灰度级间隔。来自im1
的值为110到120的所有像素将保持其初始灰度值,而另一个像素将保持其二进制值(来自im2
)。
我是matlab的新手。
谢谢。
答案 0 :(得分:1)
您真的需要使用im2bw
进行阈值设置吗?
如果没有,我会推荐这样的东西(使用你的示例阈值):
im1(im1<110) = 0;
im1(im1>120) = 255;
低于110的每个值都将设置为零,高于120的每个值将设置为255(最大灰度级),其余值不受影响。 我希望这是你想要的结果。您无需叠加图像。
如果您真的想使用im2bw
(使用更高级的阈值方法)并叠加图片im1
和im2
,您可以使用此功能:
im1(im1<110 | im1>120) = 0;
im2(im1>=110 & im1<=120) = 0;
im3 = im1 + im2uint8(im2);
答案 1 :(得分:0)
在Matlab中做这件事并不难,请看这个例子:
range = [90 150];
grayThresh = 115;
im1 = imread('rice.png');
im2 = (im1 > grayThresh) * 255;
im3 = im1;
binaryPlaces = im1 < range(1) | im1 > range(2);
im3(binaryPlaces) = im2(binaryPlaces);
imshow(im3);
最难的部分是跟踪每个图像的数据类型。如果图像是double
,则0为黑色,1为白色,但如果图像为uint8
,则0为黑色,255为白色。由于测试图像rice.png
(包含在Matlab中)加载为uint8
,因此我们需要将im2乘以255。