Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中RGB图像中红、绿、蓝的比例_Matlab_Image Processing - Fatal编程技术网

Matlab中RGB图像中红、绿、蓝的比例

Matlab中RGB图像中红、绿、蓝的比例,matlab,image-processing,Matlab,Image Processing,假设我使用 imrgb=cat(3,image1,image2,image3) 默认情况下,我得到的是完整的绿色图像。然而,若我将image1乘以2,那个么颜色将变为红色,我也可以对其他通道这样做。现在我的问题是,有没有算法可以找到这些数字,它们应该乘以红色、绿色和蓝色通道,得到我想要的图像,并假设我知道我想要的图像 您的问题可能是每个通道都没有标准化(具有不同的动态范围) 关于你的问题:是的。如果你知道你想要的图像,你只需要找到3个乘法常数(每个通道一个)。如果您的图像大小为100x100,

假设我使用

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

默认情况下,我得到的是完整的绿色图像。然而,若我将image1乘以2,那个么颜色将变为红色,我也可以对其他通道这样做。现在我的问题是,有没有算法可以找到这些数字,它们应该乘以红色、绿色和蓝色通道,得到我想要的图像,并假设我知道我想要的图像

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

关于你的问题:是的。如果你知道你想要的图像,你只需要找到3个乘法常数(每个通道一个)。如果您的图像大小为100x100,则有10000个线性数学方程,其中包含3个未知数。这是很容易解决的。事实上,你只需要3个像素就可以生成3个方程,解出它们并检索你的常数。标准解是通过奇异值分解(SVD)获得的最小平方误差

如果你不知道你想要的图像,那么一个快速而肮脏的方法就是在将3个通道连接到RGB之前重新规范化它们。
例如:img1。找到最小值和最大值(用最小值和最大值表示),并将像素的每个值更改为
(v-min)/(max-min)*255
。对3个通道中的每个通道执行此操作,然后连接。这将解决您遇到的每个通道的动态范围不同的问题。然而,这并不是完美的解决方案。它适用于自然图像,但当图像中的白平衡偏移(日落、日出、游泳池、植被等图像)时,可能会产生错误的结果。

请包括一个包含代码,以再现您的问题。当我运行上面的代码时,我得到了我所期望的结果。我准确地键入了上面的命令,但是我应该提到我正在处理uint16图像。我看到了转换RGB t灰度的算法。有没有一种算法可以进行反转?有没有算法告诉我,如果我想得到给定的图像,我应该将image1、image2和image3乘以不同的常数。问题是我们不知道您使用的是什么样的
image1
image2
image3
,所以我们可以随意定义它们。你是如何获得这些图像的?它们都一样吗?不,通常没有从灰度图像恢复颜色信息的方法。请向我们提供
image1
image2
image3
是什么。如果您只提供了定义了这三个图像的事实,而几乎没有提供任何信息,那么就不可能重建您的问题并诊断如何解决它。此外,从灰度到原始彩色图像是不可能的。从一维问题到三维问题,完全没有约束。有许多颜色满足一个灰度强度,因为从颜色到灰度是三个分量的加权和。image1、image2和image3灰度图像是通过已知的R、G、B颜色过滤器拍摄的吗?这是这个问题可能有意义的唯一方式。