コマンドを使用するたびにimagesc(image);
、結果の画像に黄色の領域がいくつかあり、背景が赤であることがわかりました。
画像のこれらの領域をセグメント化する方法はありますか?しきい値処理に使用できる同様のパターンがない場合、または色表現は無意味ですか?
WindowsでMatlabR2012aを使用しています。
コマンドを使用するたびにimagesc(image);
、結果の画像に黄色の領域がいくつかあり、背景が赤であることがわかりました。
画像のこれらの領域をセグメント化する方法はありますか?しきい値処理に使用できる同様のパターンがない場合、または色表現は無意味ですか?
WindowsでMatlabR2012aを使用しています。
imagesc (イメージ スケールの略) を使用している場合、そのマトリックスの最小値をカラーマップの一方の端にマッピングし、マトリックスの最大値をもう一方の端にマッピングすることによって、マトリックスを視覚化しています。
既定では、MATLAB は通常の RGB カラー範囲である jet() カラーマップを使用します。画像の一部が黄色になった場合、行列の要素が最高値と最低値の間の特定の場所にあったことを意味します。
以下の例は、うまくいけばこれをより明確に示し、マトリックスの「黄色」の領域をセグメント化する方法を示しています (実際には色自体はありません)。
colorRes = 256;
%# In a jet colormap with size 256, yellow is at placement 159
yellow = 159;
yellowScale = ((yellow/256));
image = repmat(1:colorRes,40,1);
figure(1);clf;
colormap(jet(colorRes))
subplot(2,1,1)
imagesc(image)
title('Original image')
%# Segment out yellow
colorDist = 1/colorRes*5; %# Make scalar higher to include colors close to yellow
imageSegmented = zeros(size(image));
imageSegmented(abs(image/colorRes-yellowScale)< colorDist) = 1;
subplot(2,1,2)
imagesc(imageSegmented)
title('Yellow segmented out')