2

OpenCV で浮動小数点行列の欠損値を再構築したいと考えています。Mat には、最小値 0 の浮動値が含まれています。私はこれを試しました:

  1. 浮動小数点 Mat を CV_8U に変換します。表示時の CV_8U 画像 (フローティング マットの 0 のポイントは黒で表示されます):

    フローティングマットから画像へ

  2. 現在のピクセルがゼロである少なくとも 1 つの非ゼロ ピクセルの 4 近傍をチェックして、マスクを生成します。マスクは、再構築されるピクセルを示します(255 の欠損ピクセルと 0 のピクセル)。マスクは次のとおりです。

マスク

  1. 手順 1 で取得した画像と手順 2 のマスクを使用して修復関数を使用しました。修復結果:

修復結果

現在、欠落している場所(画像の上)にピクセル値がありますが、この修復は浮動小数点マットに直接適用できません。8 ビットの 1 チャンネルまたは 3 チャンネルの画像のみを受け入れます。浮動小数点 Mat の欠損値を再構築/取得するにはどうすればよいですか?

4

1 に答える 1

0

float-uchar変換による精度の低下が画像全体で許容できる場合は、次の操作を実行できます。

cv::Mat result;
inpainted_image.convertTo(result, CV_32F);

result不足している値のみを入力する場合は、上記を実行してから、マスクがゼロ以外の値を転送します。

于 2013-02-22T16:46:11.963 に答える