MATLAB Answers

Rの画像行列<480×720 uint8>をX,Y​それぞれ5分割し、真​ん中(96×144)​の平均値を算出したい​。

2 views (last 30 days)
025015
025015 on 12 Jul 2018
Commented: 025015 on 18 Jul 2018
R = rgbValues(240, 360, 1); のような一画素の値は出力ではなく、 (96×144)の範囲の平均値を出したい。
cam1=vcapg2;%カメラから画像行列取得 image(cam1);%画像表示 pause(0.02);
rgbValues = cam1;%RGBの画像行列
%RGB RGB = rgbValues(240, 360, :); RGB = reshape(RGB, [1,3]);

  1 Comment

michio
michio on 13 Jul 2018
コード表示を編集しました。添付の画像のように、コード部分を選択し、{}Code ボタンを押すことでできますので、ぜひご利用ください。

Sign in to comment.

Accepted Answer

Kei Otsuka
Kei Otsuka on 13 Jul 2018
画像を5分割するためのインデックスの作成ができればよさそうですね。
ご参考 :  行列のインデックス 
今回のケースですと、まず画像を読み込んで適当にリサイズし、
img = imread('AT3_1m4_06.tif');
img = imresize(img, [480 720]);
5分割するためのインデックステーブルを作成
sz = size(img);
tblc = [0 sz(1)/5 * [1:5]];
tblr = [0 sz(2)/5 * [1:5]];
中心部分をROIとして抽出
idx = 3;
roi = img(tblc(idx)+1:tblc(idx+1), tblr(idx)+1:tblr(idx+1));
平均値を求める
mean(roi(:))
また、insertShape等を利用して元画像に抽出した領域を書き込んであげると解りやすいです。
img2 = insertShape(img, 'Rectangle', [tblr(idx)+1, tblc(idx)+1, 144, 96], 'Linewidth', 5);
figure, imshow(img2)

  7 Comments

Show 4 older comments
025015
025015 on 18 Jul 2018
ありがとうございます。 それぞれ 関数 'imshow' (タイプ'double' の入力引数) が未定義です。 関数 'rgb2gray' (タイプ'uint8' の入力引数) が未定義です。 となってしまいますが、何か必要なのでしょうか。
Kei Otsuka
Kei Otsuka on 18 Jul 2018
Image Processing Toolboxが必要ですが、お持ちではないですか?
もしくは、R2014b以降のバージョンであれは、imshowとrgb2grayはMATLAB本体の関数として 使うことができますので、アップグレードされるのも良いかと思います。
025015
025015 on 18 Jul 2018
持ち合わせていないため、アップグレードします。色々とご対応頂きありがとうございました。

Sign in to comment.

More Answers (0)

Products


Release

R2013a