尝试将河流从黑色涂成黄色,我遇到“小”问题。
这个问题的图像是一张地图的简单灰度图像,上面有一条河(original image)。 任务是将这条河“画”成黑色(0,0,0)到黄色(255,255,0)。
据我所知,我们实际上无法在不将其“转换”为RGB的情况下绘制灰度图像,所以我做了:
问题在于,不仅河流被涂成了黄色,而且在图像的右侧添加了一个相对较大的黄色方块。我会在代码后面发布图片。
originalIM_River = imread('fig_lista4_2.bmp');
figure,title('Original image'),imshow(originalIM_River)
imRGB_River = cat(3, originalIM_River, originalIM_River, originalIM_River);
[nLine, nColumn] = size(imRGB_River);
for i = 1 : nLine
for j = 1 : nColumn
if imRGB_River(i,j) >= 0 && imRGB_River(i,j) <= 48
imRGB_River(i,j,:) = [255,255,0]; % (255,255,0) is yellow
end
end
end
figure, title('New imagem - River painted with yellow'),imshow(imRGB_River)
我试图将每个通道与图像(红色,绿色,蓝色)分开,找出哪些像素在0到48范围内并将其涂成黄色以便稍后将它们连接起来,但这也不起作用。
答案 0 :(得分:0)
错误在于这一行:
[nLine, nColumn] = size(imRGB_River);
这里imRGB_River
是一个三维矩阵,其中3是第三维的大小。由于您只从size
函数请求2个维度,因此它将返回上一个输出中所有非单例尾随维度的产品,因此nColumn
将返回{{ 1}},或者比你预期的大三倍。要修复它,您可以使用原始图像矩阵(在复制第三维之前):
N*3
或致电ignore additional output dimensions如下[nLine, nColumn] = size(originalIM_River);
:
size