1枚の画像でROIを繰り返す方法
17 次查看(过去 30 天)
显示 更早的评论
1枚の画像でROIを用いて、複数の任意領域の平均輝度値検出をやろうと思っています。1箇所のみの検出はできたのですが、それを繰り返す方法がわかりません。検出したい画像は様々な処理を行っていて時間がかかるので、処理後の画像に対して、数回ROIを繰り返せればと思っています。良い方法を教えていただけると幸いです。
I=imread('**.JPG');
Igray=rgb2gray(I);
imshow(Igray)
hFH=drawfreehand();
binaryiImage=hFH.createMask();
Luminance=mean(Igray(binaryiImage))
2 个评论
Kenta
2020-1-23
こんにちは、任意領域は各画像で同じでしょうか?それとも各画像で、ROIを指定しますか?
できている範囲でよいので、いま止まっているところまでコードを共有してもらえると助かります(画像もあるとありがたいです)。
采纳的回答
Kenta
2020-1-23
Natsumi Nakataniさま、説明いただき、ありがとうございます。こちらこそ意味がくみ取れておらず申し訳ございません。
「1枚の画像で青、緑、赤といった範囲を指定して、それぞれの領域の平均輝度値を算出したい」とのことですが、
以下のどちらの意味でしょうか?
1)1枚の青、緑、赤チャンネルの範囲をそれぞれ指定して、それぞれの(赤、青、緑)の領域の平均をだしたい
2)1つのチャンネル内で、3つくらいの領域を自分で指定し、それら3つの領域の平均をだしたい
どちらにも取れる気がしたので、それぞれの例を以下に示します。
上が、1)のパターンで、それぞれのチャンネルを取り出してやっていて、下が2)のパターンでやっています。両方とも意図したものではなかったらすいません。
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
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)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 ROI ベース処理 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!