1枚の画像でROIを繰り返す方法

조회 수: 13 (최근 30일)
Natsumi Nakatani
Natsumi Nakatani 2020년 1월 23일
댓글: Natsumi Nakatani 2020년 1월 24일
1枚の画像でROIを用いて、複数の任意領域の平均輝度値検出をやろうと思っています。1箇所のみの検出はできたのですが、それを繰り返す方法がわかりません。検出したい画像は様々な処理を行っていて時間がかかるので、処理後の画像に対して、数回ROIを繰り返せればと思っています。良い方法を教えていただけると幸いです。
I=imread('**.JPG');
Igray=rgb2gray(I);
imshow(Igray)
hFH=drawfreehand();
binaryiImage=hFH.createMask();
Luminance=mean(Igray(binaryiImage))
  댓글 수: 2
Kenta
Kenta 2020년 1월 23일
こんにちは、任意領域は各画像で同じでしょうか?それとも各画像で、ROIを指定しますか?
できている範囲でよいので、いま止まっているところまでコードを共有してもらえると助かります(画像もあるとありがたいです)。
Natsumi Nakatani
Natsumi Nakatani 2020년 1월 23일
質問がわかりにくくてすみません。
やりたいことは下記の図のように1枚の画像で青、緑、赤といった範囲を指定して、それぞれの領域の平均輝度値を算出したいと思っています。
cameraman2.tif
現在は下記のコードを作成し、1箇所のみの検出はできます。
I=imread('cameraman.tif');
imshow(I)
hFH=drawfreehand();
binaryiImage=hFH.createMask();
Luminance=mean(I(binaryiImage))

댓글을 달려면 로그인하십시오.

채택된 답변

Kenta
Kenta 2020년 1월 23일
Natsumi Nakataniさま、説明いただき、ありがとうございます。こちらこそ意味がくみ取れておらず申し訳ございません。
「1枚の画像で青、緑、赤といった範囲を指定して、それぞれの領域の平均輝度値を算出したい」とのことですが、
以下のどちらの意味でしょうか?
1)1枚の青、緑、赤チャンネルの範囲をそれぞれ指定して、それぞれの(赤、青、緑)の領域の平均をだしたい
2)1つのチャンネル内で、3つくらいの領域を自分で指定し、それら3つの領域の平均をだしたい
どちらにも取れる気がしたので、それぞれの例を以下に示します。
上が、1)のパターンで、それぞれのチャンネルを取り出してやっていて、下が2)のパターンでやっています。両方とも意図したものではなかったらすいません。
result2.PNG
close all;clear;clc
I=imread('onion.png');
for i=1:3
I2=I(:,:,i);
subplot(1,3,i)
imshow(I2)
hFH=drawfreehand();
binaryiImage=hFH.createMask();
Luminance(i)=mean(I(binaryiImage));
end
Luminance
result3.PNG
close all;clear;clc
I=imread('cameraman.tif');
for i=1:3
subplot(1,3,i)
imshow(I)
hFH=drawfreehand();
binaryiImage=hFH.createMask();
Luminance(i)=mean(I(binaryiImage));
end
mean(Luminance)
  댓글 수: 1
Natsumi Nakatani
Natsumi Nakatani 2020년 1월 24일
いつもご回答ありがとうございます。
1)のパターンを想定した質問でしたが、2)のパターンもいずれ使いそうなので、大変助かりました。
ありがとうございました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!