1
我使用的是FreeMat,我有一个RGB图片,它是一个3D矩阵,包含图片的列和行以及每个像素的RGB值。基本FreeMat/MATLAB语法 - 尺寸错误
由于没有固有的功能将RGB图片转换为YIQ,我已经实现了一个。我想出了这个代码:
假设我有一个三维阵列,image_rgb
:
matrix = [0.299 0.587 0.114;
0.596 -0.274 -0.322;
0.211 -0.523 0.312];
row = 1:length(image_rgb(:,1,1));
col = 1:length(image_rgb(1,:,1));
p = image_rgb(row,col,:);
%Here I have the problem
mage_yiq(row,col,:) = matrix*image_rgb(row,col,:);
max_y = max (max(image_yiq(:,:,1)));
max_i = max (max(image_yiq(:,:,2)));
max_q = max (max(image_yiq(:,:,3)));
%Renormalize the image again after the multipication
% to [0,1].
image_yiq(:,:,1) = image_yiq(:,:,1)/max_y;
image_yiq(:,:,2) = image_yiq(:,:,2)/max_i;
image_yiq(:,:,3) = image_yiq(:,:,3)/max_q;
我不明白为什么矩阵乘法失败。我想要的代码是好的,不只是,用手乘以矩阵...
http://www.mathworks.com/help/toolbox/images/ref/rgb2ntsc.html – 0x90
你知道矩阵乘法原理如何工作吗?你是如何解读你得到的错误信息的?在需要解决的问题中,您实际上是在尝试将矩阵和3D数组相乘。 btw:您可以使用size(mat,n)来获取沿尺寸n而不是长度(mat(:1,1))或长度(mat(1,:,1))的mat的大小。和mat(1:size(mat,1),mat(1:size(mat,2),:)是一样的mat(:,:),它与mat相同,即你的p是相同的作为image_rgb。 –