ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ROI を使用したイメージ比較ツールの作成

この例では、新しい ROI 関数を使用して対話型のイメージ比較ツールを作成する方法を説明します。イメージを処理する際には、多くの場合、関数がイメージに与える影響を視覚的に評価する必要があります。その中には、エッジ フィルターのように明確に区別できる効果もあります。一方で、詳しく調べる必要がある微妙な影響もあります。

ワークスペースへのサンプル イメージの読み取り

サンプル イメージをワークスペースに読み取った後、このイメージのグレースケール バージョンを作成します。関数 imshowpair を使用して、2 つのイメージを表示します。montage オプションを使用すると、イメージが並べて表示されます。

im = imread('peppers.png');
imgray = rgb2gray(im);
figure;
imshowpair(im,imgray,'montage')

ROI を使用して、重なった 2 つのイメージのアルファ層 (透明度) を設定し、1 つのイメージで ROI の内側のみが透けて表示されるようにします。この選択的な表示は ROI に従うため、対話形式で移動できます。新しい Figure と座標軸を作成します。

hFigure = figure();
hAxes = axes('Parent', hFigure);

両方のイメージを同じ座標軸上に重ねます。

hImage1 = imshow(im, 'Parent', hAxes);
drawnow; % Ensure the image gets drawn.
hold on;
hImage2 = imshow(imgray, 'Parent', hAxes);
hold off;

座標軸上に円 ROI を作成します。

centerLocation = [220, 100];
radius = 60;
hC = images.roi.Circle(...
    'Parent', hAxes,...
    'FaceAlpha',0,...
    'Center',centerLocation,...
    'Radius', radius);

ROI (円) の位置の変化をリッスンするリスナーを作成します。関数 updateAlpha の定義は、この例の終わりで行います。

addlistener(hC,'MovingROI', @updateAlpha);

最初に手動でコールバックを実行します。

updateAlpha(hC)

領域へのズームインのシミュレーションを行います。

hC.Parent.XLim = [75 370];
hC.Parent.YLim = [0 205];

次のファイルには、このイメージ比較ツールを実装する関数のソース コードが含まれています。このコードは他に 2 つのイベントをリッスンします。ユーザーが 't' キー ('T' キー) を押すと、上に表示されるイメージが切り替わります。また、このコードはマウスのスクロール ホイールをリッスンして、ROI の半径を増減します。

edit helperImageComparer

ツール使用中のアニメーション

アルファ層を更新するコールバック関数

ROI オブジェクトの移動時にアルファ層を更新するコールバック関数は次のとおりです。

function updateAlpha(hC, ~)
hImages = findobj(hC.Parent,'Type','image');
% Create a BW mask from the Circle ROI
mask = hC.createMask(hImages(1).CData);
% Set the alpha data so that the underlying image shows through
% only inside the circle
set(hImages(1),'AlphaData', ~mask);
end

参考

| |

関連するトピック