1、壞點(diǎn)介紹
圖像壞點(diǎn)(Bad pixel) : 圖像傳感器上光線采集點(diǎn)(像素點(diǎn))所形成的陣列存在工藝上的缺陷,或光信號(hào)進(jìn)行轉(zhuǎn)化為電信號(hào)的過程中出現(xiàn)錯(cuò)誤,從而會(huì)造成圖像上像素信息錯(cuò)誤,導(dǎo)致圖像中的像素值不準(zhǔn)確,這些有缺陷的像素即為圖像壞點(diǎn)。
由于來自不同工藝技術(shù)和傳感器制造商,尤其對(duì)一些低成本、消費(fèi)品的sensor來說,壞點(diǎn)數(shù)會(huì)有很多。另外,sensor在長(zhǎng)時(shí)間、高溫環(huán)境下壞點(diǎn)也會(huì)越來越多,從而破壞了圖像的清晰度和完整性。壞點(diǎn)校正的目的就是修復(fù)這類問題,通常壞點(diǎn)分為一下兩種:
(1) 靜態(tài)壞點(diǎn):分為靜態(tài)亮點(diǎn)和靜態(tài)暗點(diǎn)。
靜態(tài)亮點(diǎn):一般來說像素點(diǎn)的亮度值是正比于入射光的,而亮點(diǎn)的亮度值明顯大于入射光乘以相應(yīng)比例,并且隨著曝光時(shí)間的增加,該點(diǎn)的亮度會(huì)顯著增加;
靜態(tài)壞點(diǎn):無論在什么入射光下,該點(diǎn)的值接近于0;
(2) 動(dòng)態(tài)壞點(diǎn):在一定像素范圍內(nèi),該點(diǎn)表現(xiàn)正常,而超過這一范圍,該點(diǎn)表現(xiàn)的比周圍像素要亮。與sensor 溫度、增益有關(guān),sensor 溫度升高或者gain 值增大時(shí),動(dòng)態(tài)壞點(diǎn)會(huì)變的更加明 顯;
2、壞點(diǎn)校正成因
為什么圖像處理的過程中需要做壞點(diǎn)校正,而且壞點(diǎn)校正(DPC)通常在ISP的pipeline靠前位置?
主要有如下原因:
(1) 如果圖像中存在壞點(diǎn)的話,ISP后續(xù)進(jìn)行插值和濾波處理時(shí),會(huì)影響周圍的像素點(diǎn)值,因此需要在插值和濾波之前對(duì)壞點(diǎn)進(jìn)行校正 ;
(2) 圖像存在壞點(diǎn)比較多或動(dòng)態(tài)壞點(diǎn)很多的情況下,會(huì)造成圖像的邊緣出現(xiàn)偽色彩的情況,這種現(xiàn)象不但影響圖像的清晰度,而且會(huì)影響邊緣的色彩;
(3) 壞點(diǎn)也會(huì)造成圖像部分pixel閃爍的現(xiàn)象;
3、壞點(diǎn)校正策略
圖像的壞點(diǎn)校正(DPC)通常在Bayer域(灰度圖原理一致)進(jìn)行。若Bayer域?yàn)镽/G/B三通道,則分別進(jìn)行壞點(diǎn)校正;若Bayer域?yàn)镽GBIR格式,則分別對(duì)R/Gr/Gb/B四通道獨(dú)立進(jìn)行。動(dòng)態(tài)壞點(diǎn)校正和靜態(tài)壞點(diǎn)校正是兩個(gè)相互獨(dú)立的過程,可以同時(shí)開啟,也可以只開啟一個(gè),視需要設(shè)置。
靜態(tài)壞點(diǎn)校正:基于已有的靜態(tài)壞點(diǎn)表,比較當(dāng)前點(diǎn)的坐標(biāo)是否與靜態(tài)壞點(diǎn)表中的某個(gè)坐標(biāo)一致,若一致則判定為壞點(diǎn),然后再計(jì)算校正結(jié)果對(duì)其進(jìn)行校正。一般情況下,每個(gè)sensor的壞點(diǎn)都不一樣,需要sensor廠商給出每個(gè)sensor的靜態(tài)壞點(diǎn)表,但是出于成本的考慮,很多sensor廠商并沒有給出,而用戶校正的話只能一個(gè)一個(gè)對(duì)其進(jìn)行校正,因此對(duì)于一些低成本的sensor,靜態(tài)壞點(diǎn)校正的實(shí)用性不是很強(qiáng)。另外,由于在硬件設(shè)計(jì)的時(shí)候需要占用大量的memory,考慮到芯片面積以及一些其他原因,因此靜態(tài)壞點(diǎn)有大小的限制,不可以無限制的校正。
動(dòng)態(tài)壞點(diǎn)校正:可以實(shí)時(shí)的檢測(cè)和校正sensor 的亮點(diǎn)與暗點(diǎn),并且校正的壞點(diǎn)個(gè)數(shù)不受限制。動(dòng)態(tài)壞點(diǎn)校正相對(duì)靜態(tài)壞點(diǎn)校正具有更大的不確定性。動(dòng)態(tài)dpc可以分為兩個(gè)步驟,分別為壞點(diǎn)檢測(cè)和壞點(diǎn)校正。
4、源碼實(shí)現(xiàn)(Matlab Version)
該算法是動(dòng)態(tài)壞點(diǎn)校正策略實(shí)現(xiàn),算法使用梯度百分比的方式去檢測(cè)壞點(diǎn),檢測(cè)到壞點(diǎn)之后通過中值濾波進(jìn)行壞點(diǎn)校正,最終通過alpha混合的方式計(jì)算出最終的計(jì)算結(jié)果。
代碼如下:
close all;
clear;
clc;
%% variable
dp_slope = 0.02;
dp_thresh = -0.3;
r=3; %Stencil radius
%% read raw image
% x = 0:255;
% y = dp_slope * x + dp_thresh;
% y(y<0) = 0;
% y(y>1) = 1;
% figure,
% plot(0:255,y)
% axis([0 255 0 1.5])
[filename, pathname] = ...
uigetfile({'*.raw'}, 'select picture');
str = [pathname filename];
fp = fopen(str, 'rb');
[X,l] = fread(fp, [1920,1080], 'uint16');
fclose(fp);
img = uint8(X/16)';
[height, width] = size(img);
img_correct = zeros(height, width);
%% Image edge extension
imgn=zeros(height+2*r,width+2*r);
imgn(r+1:height+r,r+1:width+r)=img;
imgn(1:r,r+1:width+r)=img(1:r,1:width);
imgn(1:height+r,width+r+1:width+2*r+1)=imgn(1:height+r,width:width+r);
imgn(height+r+1:height+2*r+1,r+1:width+2*r+1)=imgn(height:height+r,r+1:width+2*r+1);
imgn(1:height+2*r+1,1:r)=imgn(1:height+2*r+1,r+1:2*r);
%% dp algorithm
for i = r+1:height-r
for j = r+1:width-r
img_r = imgn(i-r:2:i+r, j-r:2:j+r);
data_r_center = img_r(r, r);
data_r_diff(1:r+1, 1:r+1) = abs(img_r - img_r(r,r));
data_r_sort = sort(img_r(:));
data_r_median = data_r_sort(r*2+1);
data_r_detect = data_r_diff * dp_slope + dp_thresh;
data_r_detect(data_r_detect < 0) = 0;
data_r_detect(data_r_detect > 1) = 1;
data_r_judge = sum(sum(data_r_detect > 0));
data_r_weight = sum(sum(data_r_detect)) / data_r_judge;
if i-r == 18 && j-r == 43
a = 1;
end
if data_r_judge >= 7
data_r_correct = data_r_median * data_r_weight + (1-data_r_weight) * data_r_center;
else
data_r_correct = data_r_center;
end
img_correct(i-r, j-r) = data_r_correct;
end
end
%% show
figure,imshow(uint8(img));
figure,imshow(uint8(img_correct));
-
圖像傳感器
+關(guān)注
關(guān)注
68文章
1910瀏覽量
129624
原文標(biāo)題:圖像處理之壞點(diǎn)校正及源碼實(shí)現(xiàn)
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論