例: 凸包
cnvxhull関数を使用して、行列 M 内の前景の輝度の値が fg であるピクセルの凸包を求めます。出力は、凸包の内側が 1、外側が 0 で 2 値化されています。使用されているアルゴリズムについては、A. Rosenfeld/A. C. Kak 著
『Digital Picture Processing』 (1982) の 269 ページを参照してください。
凸包を検出するアルゴリズムは、M 内の一連のピクセルの左上の点として P1 を選択し、P1 を通る水平線として L1 を選択します。次に、一連のピクセルのうちの値 fg に突き当たるまで、P1 を中心に L1 を回転させます。回転後の直線を L2 とし、L2 上の P1 から最も離れた点を P2 として選択します。この処理を Pn = P1 になるまで繰り返します。{P1,P2, ... ,Pn-1} の和集合は凸包の頂点です。
この例の使用方法については、
画像処理の例についてを参照してください。
1. 入力行列を定義します。
2. 前景の輝度の値が 1 であるピクセルの凸包を計算します。
凸包には元の行列で値が 1 のすべてのピクセルが含まれています。これは最小の凸集合です。
3. 前景ピクセルの値を 2 に設定し、凸包を再計算します。
4. とうもろこしの種の 2 値画像とその凸包を重ね合わせ、画像に輪郭と穴を表示した状態で凸包の効果を確認します。
5. 2 値画像で白色 (1) ピクセルの凸包を検出し、凸包からその画像を減算することで凸欠陥を検出します。直接減算するのではなく、2 値画像と凸包が尺度化されて、凸包の外側の領域が灰色、画像のピクセルが黒色、凸欠陥が白色で表示されます。
6. 画像 M、Mbin255、Mdef を横に並べて表示します。
(corn1.bmp) | (mbin_255.bmp) | (mdef.bmp) |
M では凸包の外側が灰色、Mbin55 では黒色で表示され、最後の画像 Mdef では凸欠陥が白色で表示されています。