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

2 ビュー (過去 30 日間)
025015
025015 2018 年 7 月 12 日
コメント済み: 025015 2018 年 7 月 18 日
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 件のコメント
michio
michio 2018 年 7 月 13 日
編集済み: michio 2018 年 7 月 13 日
コード表示を編集しました。添付の画像のように、コード部分を選択し、{}Code ボタンを押すことでできますので、ぜひご利用ください。

サインインしてコメントする。

採用された回答

Kei Otsuka
Kei Otsuka 2018 年 7 月 13 日
画像を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 件のコメント
Kei Otsuka
Kei Otsuka 2018 年 7 月 18 日
Image Processing Toolboxが必要ですが、お持ちではないですか?
もしくは、R2014b以降のバージョンであれは、imshowとrgb2grayはMATLAB本体の関数として 使うことができますので、アップグレードされるのも良いかと思います。
025015
025015 2018 年 7 月 18 日
持ち合わせていないため、アップグレードします。色々とご対応頂きありがとうございました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeグラフィックス についてさらに検索

製品


リリース

R2013a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!