5

私はこのコードを理解しようとしています:

d=edge(d,'canny',.6);
figure,
imshow(d,[])

ds = bwareaopen(d,40);
figure,
imshow(ds,[])

iout = d1;
BW=ds;

iout(:,:,1) = iout;
iout(:,:,2) = iout(:,:,1);
iout(:,:,3) = iout(:,:,1);
iout(:,:,2) = min(iout(:,:,2) + BW, 1.0);
iout(:,:,3) = min(iout(:,:,3) + BW, 1.0);

それが画像であることがわかりd、キャニー検出器が適用され、40 ピクセルが無視されます。画像はグレースケールで、画像に輪郭が追加されています。

次の行について説明してもらえますか? ここで使用される原則/アルゴリズムは何ですか? 特にコードの輪郭検出部分に問題があります。

4

1 に答える 1

10

操作対象の元のグレースケール強度イメージ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);
于 2011-05-02T03:30:14.347 に答える