0

バイナリ イメージの形態侵食操作を実装しようとしています。しかし、実行した後はすべてが黒くなります。構造化要素 (int 配列要素) を 3x3 の正方形に設定しました。

const int radius = 1;
int element[(radius * 2 + 1)*(radius * 2 + 1)] = { 1,1,1,1,1,1,1,1,1 };
int iBitPerPixel = pDoc->_bmp->bitsperpixel;
int iWidth = pDoc->_bmp->width;
int iHeight = pDoc->_bmp->height;
BYTE *pImg = pDoc->_bmp->point;
int Wp = iWidth;

BYTE copy[319*240*10];

int r = (3 * iWidth) % 6;
int p = (6 - r) % 6;
Wp = 3 * iWidth + p;



for (int i = iHeight - 1; i >= 0; i--)
    for (int j = 0; j < iWidth; j++)
    {
        copy[i*Wp + j * 3] = pImg[i*Wp + j * 3];
        pImg[i*Wp + j * 3] = 0;
        pImg[i*Wp + j * 3 + 1] = 0;
        pImg[i*Wp + j * 3 + 2] = 0;
    }

bool fit = true;
for (int i = iHeight - 1; i >= 0; i--)
    for (int j = 0; j < iWidth; j++)
    {
        for (int x = radius; x <= -radius; x--)
            for (int y = -radius; y <= radius; y++)
            {
                if (i + x < 0 || i + x >= iHeight|| j + y < 0) continue;
                if (element[(x + radius)*radius + y + radius] == 1 && copy[(i + x)*Wp + (j + y) * 3] == 0)
                {
                    fit = false;
                    break;
                }
            }

        if (fit)
            for (int x = radius; x <= -radius; x--)
                for (int y = -radius; y <= radius; y++)
                    pImg[(i + x)*Wp + (j + y) * 3] = 255;

    }
4

1 に答える 1