これは非常に興味深い質問です。私は以前、ライブIRイメージャ(ビデオシステム)でこの種の問題に対処していました。実際には、ユーザーが画像を見たり手に取ったりする前に、この問題に対処するためのアルゴリズムがカメラに組み込まれていました。カップルの質問:
1)RAW画像を扱っていますか、それともすでに前処理されたグレースケール(またはRGB)画像を扱っていますか?
2)これらの画像の最終的な目標は何ですか。結果として得られる画像の残りの部分の品質に関係なく、単に線を取り除くことが目標であるか、または絶対的な最高の画像品質を維持するためのポイントです。後で他の処理を実行しますか?
これらの線がすべての画像に含まれている可能性が高いことに同意します。これらの線が画像に表示される理由は2つあります。1つは、列のOP AMPが飽和し、画像の列全体がカメラが出力できる最も明るい値を取得する明るいシーンにある場合です。もう1つの理由は、OP AMPまたはADC(アナログ-デジタルコンバーター)自体が不良である可能性があります(通常、センサー全体に1つのADCがあり、画像全体が不良になるため、ADCではない可能性があります)。飽和状態の場合は、実際には対処がはるかに困難です(これがあなたの問題ではないと思います)。注:センサーの彩度が高すぎると、センサーに不良ピクセルや列が発生する可能性があります(そのため、カメラを太陽に向けないように言われています)。不良カラムの問題に対処できます。上記の別の答えでは、誰かがあなたに画像を平均化してもらいました。これは、悪い列(または悪い単一ピクセル、またはセンサーのノイズマトリックス)がどこにあるかを見つけるのに良いかもしれませんが(そして、カメラを平均して黒、白、本質的に単色に向ける必要があります)、そうではありません。それらを取り除くための正しい答え。ちなみに、白黒や平均化、ドット抜けなどで説明しているのは、センサーのキャリブレーションといいます。
OK、つまり、このキャリブレーションデータを取得できると言うと、単一のピクセルであっても、どの列が不良であるかを見つけることができます。
このデータがある場合、列を消去する1つの方法は次のとおりです。
for each bad column
for each pixel (x, y) on the bad column
pixel(x, y) = Average(pixel(x+1,y),pixel(x+1,y-1),pixel(x+1,y+1),
pixel(x-1,y),pixel(x-1,y-1),pixel(x-1,y+1))
これが本質的に行うことは、不良ピクセルを、その周囲に残っている6つの良好なピクセルの平均である新しいピクセルに置き換えることです。上記は、アルゴリズムの過度に単純化されたバージョンです。確かに、1つだけ悪いピクセルが悪い列のすぐ隣にあり、平均化に使用すべきではない場合や、2つまたは3つの悪い列が隣り合っている場合があります。不良列の値を計算し、次の不良列に進むためにその列が適切であると見なすと想像できます。
さて、RAWとB/WまたはRGBについて尋ねた理由。RAWを処理している場合、センサー自体のビルドによっては、バイエルフィルター処理されたイメージセンサーの1つのサブピクセル(使用する場合)のみが不良OPAMPを持っている可能性があります。これを検出できれば、必ずしも他の適切なサブピクセルのデータを破棄する必要はありません。次に、RGBセンサーを使用してグレースケール写真を撮影し、それをRAWで撮影した場合、独自のグレースケールピクセルを計算できる場合があります。RGBセンサーを使用しているときにグレースケール画像を返す場合、多くのセンサーは単に緑のピクセルを全体のピクセルとして返します。これは、それが実際に画像の発光として機能するという事実によるものです。これが、ほとんどのイメージセンサーがrまたはgサブピクセルごとに2つの緑色のサブピクセルを実装する理由です。
gray = (0.299*r + 0.587*g + 0.114*b)
長い間答えてしまったことをお詫びしますが、これがまだ誰かに情報を提供することを願っています:-)