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。 –