ラベル付き画像の面積計算

この方法では、入力画像を左上から走査してラベル番号にあたったらその番号の配列の値を1カウントします。
走査が完了したら、すべてのラベルの画素数が計算されています。
ラベル数はあらかじめわかっており、面積計算結果の配列の領域は確保されているものとしています。

/*
非対象領域 NOLABEL
引数:
naaLabel : 入力2値画像
nLabel   : ラベル数
pnArea   : 各ラベル領域の面積計算結果
nPixel   : 入力画像横サイズ
nLine    : 入力画像縦サイズ
*/

int CountLabel
( BYTE  **naaLabel, int nLabel, int *pnArea, int nPixel, int nLine )
{
    int iLn, iPx, iLb;
    
    //Calculate Scale
    for ( iLb = 0; iLb < nLabel; iLib++ )
    {
        pnArea[iLb] = 0;
    }
    
    for ( iLn = 0; iLn < nLine; iLn++ )
    {
        for ( iPx = 0; iPx < nPixel; iPx++ )
        {
            if ( naaLabel[iLn][iPx] < NOLABEL ) || ( naaLabel[iLn][iPx] >= nLabel ) )
            {
                return false;
            }
            else if ( naaLabel[iLn][iPx] != NOLABEL )
            {
                pnArea[naaLabel[iLn][iPx]]++;
            }
        }
    }
    
    return true;
}
アーカイブ