操作対象の元のグレースケール強度イメージd1
の倍精度表現 (0 ~ 1 の値) と思われるものが変数に格納されていると仮定すると、最後の 5 行はそのグレースケール イメージを3D RGB イメージに変換します。輪郭がシアンで画像に重ねられることを除いて、元のグレースケール画像と同じです。 iout
'cameraman.tif'
MATLAB Image Processing Toolboxに含まれているイメージを使用した例を次に示します。
d1 = double(imread('cameraman.tif'))./255; % Load the image, scale from 0 to 1
subplot(2, 2, 1); imshow(d1); title('d1'); % Plot the original image
d = edge(d1, 'canny', .6); % Perform Canny edge detection
subplot(2, 2, 2); imshow(d); title('d'); % Plot the edges
ds = bwareaopen(d, 40); % Remove small edge objects
subplot(2, 2, 3); imshow(ds); title('ds'); % Plot the remaining edges
iout = d1;
BW = ds;
iout(:, :, 1) = iout; % Initialize red color plane
iout(:, :, 2) = iout(:, :, 1); % Initialize green color plane
iout(:, :, 3) = iout(:, :, 1); % Initialize blue color plane
iout(:, :, 2) = min(iout(:, :, 2) + BW, 1.0); % Add edges to green color plane
iout(:, :, 3) = min(iout(:, :, 3) + BW, 1.0); % Add edges to blue color plane
subplot(2, 2, 4); imshow(iout); title('iout'); % Plot the resulting image
上記のコードが作成する図は次のとおりです。

使い方...
画像の作成はiout
、エッジ検出アルゴリズムとは関係ありません。これは、前の手順で見つかったエッジを簡単に表示する方法です。2-D グレースケール強度画像は色を表示できないため、画像に色付きの等高線を追加する場合は、最初に色を表示できる形式に変換する必要があります。私の経験では扱いにくい) または 3-D RGB 画像 (3 番目の次元は各ピクセルの赤、緑、青の色成分を表します)。
グレースケール イメージを 3 次元で 3 回複製すると、最初はまだ灰色 (ピクセルあたりの赤、緑、青の量が等しい) を含む 3D RGB イメージが得られます。ただし、各カラー プレーンの特定のピクセルを変更することで、画像に色を追加できます。緑と青のカラー プレーンに論理エッジ マスクBW
(エッジがある部分はゼロ、それ以外はゼロ) を追加すると、輪郭が見つかったピクセルはシアン色に見えます。関数の呼び出しmin
により、イメージを追加した結果、ピクセルの色の値が value を超えないようにします1.0
。これは、要素が倍精度 3-D RGB イメージに対して持つべき最大値です。
また、3D RGB イメージを作成するためのコードは、次のように簡略化できることにも注意してください。
iout = d1;
iout(:, :, 2) = min(d1+ds, 1.0);
iout(:, :, 3) = min(d1+ds, 1.0);