Rの画像行列<480×720 uint8>をX,Yそれぞれ5分割し、真ん中(96×144)の平均値を算出したい。
2 views (last 30 days)
Show older comments
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
Accepted Answer
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
Kei Otsuka
on 18 Jul 2018
Image Processing Toolboxが必要ですが、お持ちではないですか?
もしくは、R2014b以降のバージョンであれは、imshowとrgb2grayはMATLAB本体の関数として 使うことができますので、アップグレードされるのも良いかと思います。
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!