1
私はを使用しています。RGBの画像は、画像の列と行と各ピクセルのRGB値を含む3Dマトリックスです。基本FreeMat/MATLAB構文 - 寸法誤差
RGBピクチャをYIQに変換するための組み込み関数がないため、実装しています。私はこのコードを思い付いた:行列の乗算が失敗した理由を私は理解できない
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;
:
は、私は、3D配列、image_rgb
を持っていると仮定します。私はコードを素敵にするだけでなく、行列を手で掛けたいと思っています...
http://www.mathworks.com/help/toolbox/images/ref/rgb2ntsc.html – 0x90
原則として行列の乗算がどのように機能するのか理解していますか?あなたはどのようにエラーメッセージを解釈しましたか?あなたが問題にしなければならない行では、実際に行列と3D配列を乗算しようとしています。 btw:サイズ(mat、n)を使用して、長さ(mat(:、1,1))または長さ(mat(1、:、1))ではなく次元nに沿ってマットのサイズを取得できます。そして、マット(1:サイズ(マット、1)、マット(1:サイズ(マット、2)、:)はマットと同じです:(マットと同じです。 as image_rgb。 –