【发布时间】:2014-05-15 18:42:14
【问题描述】:
我正在 matlab 中编写一个 RED 交通信号灯检测器,并认为首先要做的事情之一就是增强输入 RGB 图像中的红色。
到目前为止,这是我使用的代码:
img_hsv = rgb2hsv(img_rgb);
h_channel = img_hsv(:,:,1);
s_channel = img_hsv(:,:,2);
v_channel = img_hsv(:,:,3);
s_channel = s_channel * 10;
img_hsv_enhanced = cat(3,h_channel,s_channel,v_channel);
img_rgb_enhanced = hsv2rgb(img_hsv_enhanced);
这是对图像进行增强的结果:
我有 3 个问题:
到目前为止,我编写的代码是不是最好的方法? IE。我增强了图像的饱和度,我应该在不同的通道上工作吗?
此代码导致所有 3 种颜色都被增强,我怎样才能选择性地仅增强红色通道?
在使用函数
hsv2rgb转换回 rgb 后,我的图像像素不再在 [0,1] 或 [0,255] 范围内,而是假定为十进制值,有时也是负数。我该如何解决这个问题并将其恢复到 [0 255]?
【问题讨论】:
-
也许从这里开始阅读:mathworks.de/discovery/image-enhancement.html。谈到图像增强,我会期待一些不同于过饱和的东西。
-
@Daniel - 感谢您的链接,我已经浏览过了。我正在寻找有关此特定主题的专家的建议,这些链接非常笼统。
-
为什么图像过度饱和?我不明白您的方法的意图,因此我只能建议使用所描述的方法之一。
标签: image matlab image-processing colors computer-vision