画像処理におけるターゲットエッジ検出

画像処理におけるターゲットエッジ検出

実験分析

ここに画像の説明を挿入

画像のデジタル部分は、ソーベル演算子のエッジによって検出され、ターゲット領域を見つけるために積分画像に変換されます。
私のアイデアは、エッジ検出後に単純な2値化を実行してデジタルパーツを強調表示し、次に積分マップでターゲット領域を強調表示し、デジタル領域の左上隅の座標を見つけ、左上から右下に長方形を描くことです。

エッジ検出のためのソーベル演算子

Sobleオペレーターのエッジ検出ではSobelGrayImage関数を使用します。
数値の横に白い点があることがわかったので、後で簡単な2値化を実行します。

	void bin(BYTE *pSrc, int width, int height, BYTE *pDst)
	{
    
    
		for(int i=0;i<height;i++)
			for (int j = 0; j < width; j++)
			{
    
    
				pDst[i*width + j] = (pSrc[i*width + j]> 200 ? pSrc[i*width + j] : 0);
			}
		return;
}

次に、積分マップを計算します。

	void integrogram(BYTE* inputMatrix, int width, int height, BYTE* outputMatrix) 
	{
    
    
		BYTE *columnSum = new BYTE[width];
		for (int i = 0; i < width; i++) 
		{
    
    
			columnSum[i] = inputMatrix[i];
			outputMatrix[i] = inputMatrix[i];
			if (i > 0) 
			{
    
    
				outputMatrix[i] += outputMatrix[i - 1];
			}
		}
		for (int i = 1; i < height; i++) 
		{
    
    
			int offset = i * width;
			columnSum[0] += inputMatrix[offset];
			outputMatrix[offset] = columnSum[0];
			for (int j = 1; j < width; j++) 
			{
    
    
				columnSum[j] +=(255, inputMatrix[offset + j]);
				outputMatrix[offset + j] = min(255,outputMatrix[offset + j - 1] + columnSum[j]);
			//全部变成255;
			}
		}
	return;
}

この時点で、明らかなターゲット領域があります。

ここに画像の説明を挿入

左上隅の最初の白いピクセルの座標を取得します。

void findROIxy(BYTE *pSrc,int width,int height,int *x,int *y)
	{
    
    
		for (int i = 0; i < height; i++)
			for(int j=0;j<width;j++)
			{
    
    
				if (pSrc[i*width + j] != 0)
				{
    
    
					*x = j;
					*y = i;
					return;
				}
			}
}

左上から右下に長方形を描きます。

void drawRectangle(BYTE *pSrc, int x, int y, int width,int height,int draw_width, 	int draw_height,BYTE *pDst)
	{
    
    
		for (int i = x - 10; i < x + draw_width; i++)
		{
    
    
			pSrc[y*width + i] = 255;
			pSrc[(y + draw_height)*width + i] = 255;
		}
		for (int i = y; i < y + draw_height; i++)
		{
    
    
			pSrc[i*width+x-10] = 255;
			pSrc[i*width + x + draw_width] = 255;
		}
		
}

結果

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

デバッグモードでの実行ごとに約10ミリ秒、リリースモードで約4ミリ秒かかります。

このプロセスは、単純な2値化であるため、あまり安定していません。ターゲット領域のピクセル値に類似したポイントに遭遇すると、長方形のフレームは大きく逸脱し、このアプローチには特定の制限があります。ほとんどの写真のデジタル領域のサイズは同じであるため、デフォルトでこの領域のサイズは固定されているため、他の質問に入れても機能しません。パラメーターを変更する必要があります。より正式なアプローチが必要です。

おすすめ

転載: blog.csdn.net/qq_36587495/article/details/108164957