這是一個非常有趣的問題像素。我曾經用現場紅外成像儀(視頻系統)處理這類問題。我們實際上已經在攝像頭內置了算法來處理這個問題,然後用戶就會看到或拿到手中的圖像。幾個問題:
1)你處理RAW圖像還是處理已經預處理的灰度(或RGB)圖像?
2)這些圖像的最終目標是什麼?目標是簡單地擺脫線條,而不管圖像其餘部分的質量如何,或者是保持絕對最佳圖像質量的關鍵。之後您是否要執行其他處理?
我同意這些行很可能在您的所有圖像。這些線條出現在圖像中有兩個原因,一個是明亮的場景,其中列的運算放大器飽和,從而導致圖像的整列獲得最亮值的相機可以輸出。另一個原因可能是運算放大器或ADC(模數轉換器)本身不好(很可能不是ADC,因爲通常情況下,整個傳感器基本上只有一個ADC,這會使整個圖像變壞,而不是您的情況)。飽和情況實際上更難以處理(我不認爲這是你的問題)。注意:傳感器上的飽和度太高會導致傳感器出現壞像素和列(這就是爲什麼他們說永遠不要將您的相機指向太陽)。壞列問題可以處理。上面在另一個答案中,有人讓你平均圖像。雖然這可能很好地找出壞列(或不好的單個像素或傳感器的噪聲矩陣)在哪裏(並且您將不得不平均地將相機指向黑色,白色,基本上純色),但它不是'正確的答案擺脫他們。順便說一下,我正在用黑白和平均值來解釋,並發現壞像素等......被稱爲校準傳感器。
好的,所以說你可以得到這個校準數據,那麼你將能夠找出哪些列是壞的,甚至是單個像素。
如果您有這方面的數據,一個辦法,你可以刪除列,具體是:
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剩餘的平均替換不良像素它周圍的像素好。以上是算法的過度簡化版本。當然有一些情況,一個單獨的壞點可能正好位於壞列的旁邊,不應該用於平均值,或者兩個或三個壞列緊挨着。可以想象,你會計算一個壞列的值,然後認爲該列是好的,以移動到下一個糟糕的列等...
現在,我問起RAW與B的原因/ W或RGB。如果您正在處理RAW,根據傳感器本身的構造,拜爾濾波的圖像傳感器可能只有一個子像素(如果您願意)具有較差的運算放大器。如果你可以檢測到這一點,那麼你不一定要扔掉其他好的子像素的數據。其次,如果您使用RGB傳感器,拍攝灰度照片,並且您使用RAW拍攝,則可以計算自己的灰度像素。當使用RGB傳感器時,許多傳感器在返回灰度圖像時,將簡單地傳回Green像素作爲整個像素。這是因爲它確實用作圖像的發光。這就是爲什麼大多數圖像傳感器爲每個r或g子像素實現2個綠色子像素的原因。如果這是他們正在做的事情(不是所有的傳感器都這樣做),那麼你可能有更好的運氣擺脫壞通道列,並使用自己的灰度轉換。
gray = (0.299*r + 0.587*g + 0.114*b)
道歉了很長的解釋,但我希望這仍然是信息的人:-)
當您從以下答案中找到解決方案時,請將其作爲答案發布。這是一個奇怪的問題:) –
我可以問你打算如何處理這些視頻? PPG相關的東西? –
@Georg閱讀我以前的帖子在stackoverflow:圖像處理Algorithem在Matlab – user261002