Matlab - 图像形成 - 矩阵
Matlab - Image Formation - Matrix
我正在做一个非常有趣的计算机视觉项目,它讨论了如何使用 Matlab "create manually" 图像。
老师给了我三个矩阵:光源矩阵(称为E)、相机灵敏度矩阵(称为R)最后,表面反射率矩阵(称为 S)。
矩阵维度如下:
S:31x512x512(反射样本 x x 维度 x y 维度)
右:31x3
E: 31x1
老师还给了我如下关系:
P=转置(C)*R=转置(S)*对角线(E)*R
其中 C 是颜色矩阵。
其中 P 是传感器响应矩阵。
目标是显示前面所有矩阵形成的图像。因此,我们必须计算P矩阵。
所有矩阵的class是double.
这是我所做的:
Diag_D=diag(D);% Diagonal matrix of D
S_reshaped= reshape(S,31,[512*512]);% Reshape the surface reflectance matrix
S_permute=permute(S_reshaped,[2 1]);% The output matrix is a 262144x31 matrix
Color_Signal_D65_buffer=S_permute*Diag_DD;
Color_Signal_D65=reshape(Color_Signal_D65_buffer,[512 512 31]);% This is the final color matrix
Image_D65_buffer= (reshape(Color_Signal_D65,[512*512],31))*R;% Apply the given formula
Image_D65= reshape(Image_D65_buffer,[512 512 3]);% image formation
Image_D65_norm=sqrt(sum(Image_D65.^2,3));% Compute the Image_D65 norm
Image_D65_Normalized=bsxfun(@rdivide, Image_D65, Image_D65_norm);% Divide each element of the matrix by the norm in order to normalize the matrix
figure
imshow(Image_D65_Normalized)% Display the image
然而,它根本不起作用。输出是一张图像,但颜色完全错误(图像上的蓝色太多)。
我认为这可能是一个矩阵重塑问题,但我已经尝试了所有可能的组合,但无能为力。
非常感谢您的帮助
我终于找到了错误。这是规范化过程中的一个问题。我用错了公式。
我正在做一个非常有趣的计算机视觉项目,它讨论了如何使用 Matlab "create manually" 图像。
老师给了我三个矩阵:光源矩阵(称为E)、相机灵敏度矩阵(称为R)最后,表面反射率矩阵(称为 S)。 矩阵维度如下:
S:31x512x512(反射样本 x x 维度 x y 维度) 右:31x3 E: 31x1
老师还给了我如下关系:
P=转置(C)*R=转置(S)*对角线(E)*R
其中 C 是颜色矩阵。 其中 P 是传感器响应矩阵。
目标是显示前面所有矩阵形成的图像。因此,我们必须计算P矩阵。
所有矩阵的class是double.
这是我所做的:
Diag_D=diag(D);% Diagonal matrix of D
S_reshaped= reshape(S,31,[512*512]);% Reshape the surface reflectance matrix
S_permute=permute(S_reshaped,[2 1]);% The output matrix is a 262144x31 matrix
Color_Signal_D65_buffer=S_permute*Diag_DD;
Color_Signal_D65=reshape(Color_Signal_D65_buffer,[512 512 31]);% This is the final color matrix
Image_D65_buffer= (reshape(Color_Signal_D65,[512*512],31))*R;% Apply the given formula
Image_D65= reshape(Image_D65_buffer,[512 512 3]);% image formation
Image_D65_norm=sqrt(sum(Image_D65.^2,3));% Compute the Image_D65 norm
Image_D65_Normalized=bsxfun(@rdivide, Image_D65, Image_D65_norm);% Divide each element of the matrix by the norm in order to normalize the matrix
figure
imshow(Image_D65_Normalized)% Display the image
然而,它根本不起作用。输出是一张图像,但颜色完全错误(图像上的蓝色太多)。 我认为这可能是一个矩阵重塑问题,但我已经尝试了所有可能的组合,但无能为力。
非常感谢您的帮助
我终于找到了错误。这是规范化过程中的一个问题。我用错了公式。