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

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

Accedi per commentare.

Risposta accettata

Kenta
Kenta il 23 Gen 2020
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 Commento
Natsumi Nakatani
Natsumi Nakatani il 24 Gen 2020
いつもご回答ありがとうございます。
1)のパターンを想定した質問でしたが、2)のパターンもいずれ使いそうなので、大変助かりました。
ありがとうございました。

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!