【发布时间】:2018-09-27 19:12:06
【问题描述】:
我对 MatLab 还很陌生,我正在选修一门选修课,这门课程在我的 MBA 课程中需要 MatLab(是的,完全不同的领域)。作为作业的一部分,我们必须使用 MatLab 颜色映射将下图中的黄色对象转换为绿色:
我使用了“imread”函数并将其导入 Matlab。我也有一些使用 Matlab 的颜色图的经验,但非常基础。在提供的提示中,据说我应该使用 IMTOOL 函数来确定黄色像素和背景像素的 r、g、b 值的范围。我应该设计一种颜色映射算法,将黄色对象转换为绿色,但根本不接触任何背景。
在我之前的练习中,我们通过除以 255 将 255 值转换为 1 和 0。然后我们创建了一个新的颜色图并应用它来转换颜色。但我仍然不知道如何将这一切结合在一起。我尝试了一些从 Matlab 帮助中找到的代码,但我没有得到任何结果。我的方法是将图像导入 Matlab,读取图像矩阵。对于所有接近黄色像素的像素,我将它们替换为通用绿色像素。有一个更好的方法吗?如果没有,我将如何使用简单的 MatLab 代码来做到这一点?
另外,我检查了这个函数中的代码,我 10000000% 确定他们问我的问题不必那么复杂:https://www.mathworks.com/matlabcentral/fileexchange/26420-simplecolordetection
根据要求,这是我目前拥有的代码。它是 C 和 MatLab 的混合体,因为我了解需要做什么,并且我制作了一个快速而肮脏的 C for 循环来执行此操作,现在正尝试将其转换为 MatLab:
for i = 1: image.columnlength
for j = 1: image.rowlenght
rgb = image(i, j);
red = rgb(:,1); %rgb(1,:);
green = rgb(:,2);%rgb(2,:);
blue = rgb(:,3);%rgb(3,:);
if( red > 200 && red < 250 && green > 200 && green < 250 && blue > 200 && blue < 250
//image(i, j ) = green
end
end
end
谢谢, 史蒂夫
【问题讨论】:
-
你能把你目前拥有的代码和你得到的结果包括进来吗?此外,看看this post 关于颜色选择可能会有所帮助。
-
当然。这是我的代码,但它是 C 和 MatLab 的组合(我对 C 的理解有些好,但问题是尝试将其转换为 MatLab)。我实际上正在使用一种方法,我试图获得一系列黄色。我已将代码添加到主帖中。