首页 文章

Matlab中RGB图像中红色,绿色,蓝色的比例

提问于
浏览
1

考虑我使用了将图像转换为RGB

imrgb=cat(3,image1,image2,image3)

默认情况下,我将获得完整的绿色图像 . 但是,如果我将image1乘以2然后颜色变为红色,我也可以为其他通道执行此操作 . 现在我的问题是有任何算法找到这些数字应该乘以红色,绿色和蓝色通道来获得我想要的图像,并假设我知道我想要的图像 .

1 回答

  • 0

    可能你的问题是每个通道都没有标准化(具有不同的动态范围) .

    Regarding your question :是的如果您知道所需的图像,那么您需要找到的是3个乘法常数(每个通道一个) . 如果您的图像大小为100x100,则表示您拥有10,000个具有3个未知数的线性数学方程式 . 这很容易解决 . 实际上你只需要3个像素来生成3个方程,解决它们就可以检索你的常数 . 标准解决方案是通过SVD(奇异值分解)实现的最小平方误差 .

    If you don't know your desired image 比快速和脏的方式只是在将它们连接到RGB之前重新规范化3个通道中的每个通道 . 例如:img1 . 找到最小值和最大值(用min,max表示)并将像素的每个值更改为 (v-min)/(max-min)*255 . 为3个通道中的每个通道执行此操作,而不是连接 . 这将解决您遇到的问题,即每个通道的动态范围不同 . 然而,这不是完美的解决方案 . 它适用于自然图像,但当图像中的白 balancer 偏移时(太阳落山,太阳升起,游泳池,植被等图像)可能会产生错误的结果 .

相关问题