坏点检测_电脑屏幕坏点检测「建议收藏」

坏点检测_电脑屏幕坏点检测「建议收藏」提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、出现原因二、坏点分类三、矫正方法动态矫正1.PINTO算法2.梯度法3.DPC和demosaic结合法4.行检测法一、


一、出现原因

1.感光元件芯片自身工艺技术瑕疵造成以及长期使用造成的瑕疵;
2.光线采集存在缺陷;

二、坏点分类

1.hot pixel: 固定保持较高的像素值,一般呈现为画面高亮的点;
2.dead pixel: 固定保持较低的像素值,一般在画面中呈现为暗点;
3.noise pixel:信号强度随光照呈现的变化规律不符合正常的变化规律;

三、矫正方法

1.静态矫正:通常由sensor厂商在生产后进行标定,把所有坏点的坐标位置记录下来,然后矫正的时候直接通过查表得方式找到坏点进行矫正。(此种方法无法适应因长期使用造成的后期瑕疵情况)
2.动态矫正:就是在ISP算法中通过特殊得算法判断一个点是否为坏点,如果是坏点就行行矫正,否则原样输出;

动态矫正

1.PINTO算法

5*5
思想:坏点像素点比周围里亮或者暗
1.计算中心点与周围8个像素点的像素差值;
2.如果有正有负,则判断该点为正常点;
3.如果8个值全为正或者全为负值,则进行下一步判断;
4.如果8个差值的绝对值均大于阈值,则认为该点是坏点,用8个邻域像素的中位值代替该点,反之则判断该点为正常点。

算法缺点:对边缘处的坏点检测无效,因为边缘处也有较大的像素差值波动

2.中值梯度滤波法

在这里插入图片描述
该算法的作者针对三个通道都使用这一种窗口进行检测(Gr和Gb分开计算就是如图5*5的邻域)。思想:在边缘方向,坏点在该方向上的梯度是很高的。

具体步骤如下:

1.计算四个方向的梯度:
水平方向三个二阶梯度:Dh1 = |P1+P3-2P2|, Dh2 = |P4+P5-2Pc|,Dh3 = |P6+P8-2P7|;
数值方向三个二阶梯度:Dv1 = |P1+P6-2
P4|, Dv2 = |P2+P7-2Pc|,Dv3 = |P3+P8-2P5|;
45°三个二阶梯度:D45_1 = 2*|P4-P2|, D45_2 =|P3+P6-2Pc|, D45_3 = 2|P7-P5|;
135°三个二阶梯度: D135_1 = 2*|P2-P5|, D135_2 =|P1+P8-2Pc|, D135_3 = 2|P7-P4|;
2.取出各个方向梯度绝对值的中值median_Dh = median(Dh1,Dh2,Dh3),同理求出其他三个方向的中值;
3.求出四个中值的最小值作为边缘方向:min_grad = min(median_Dh,median_Dv,median_D45,median_D135);
4.如果最小梯度方向为水平或者竖直,若过Pc那个梯度的绝对值大于同方向的另外两个梯度绝对值和的4倍,则Pc为坏点;
5.如果是45°方向,则计算135°三个梯度绝对值两两之差的绝对值的和
在这里插入图片描述
如果D135_sum小于100,若此时D45_2>3x(D45_1+D45_3)且D135_2>3x(D135_1+D135_3),则Pc为坏点。如果D135_sum大于等于100,则D45_2>3x(D45_1+D45_3)就为坏点;
6.135°方向和45°相反的方向计算和判断即可;
7.为减少漏判,当Pc小于15且周围点都大于Pc40以上,则Pc为坏点。如果Pc大于230,且周围的点都下于Pc30以下,则该点为坏点;
8.边缘为水平方向,且判断为坏点,如过|P4-Pc|<|Pc-P5|则Pc更靠近P4,根据同一颜色通道亮度的渐变性可以推导出ouput=P4+(P2+P7-P1-P6)/2;否则ouput=P5+(P2+P7-P3-P8)/2;
9.如果为竖直方向可以参考水平方向求出;
10.边缘为45°,如果|P3-Pc|<|P6-Pc|则根据同一原则output=P3+(P4+P7-P2-p5)/2;否则为output=P6+(P2+P5-P7-p4)/2;
11.边缘为135°则按照45°的方式反过来计算即可。

3.DPC和demosaic结合法

先插值,变成RGB图像,再根据所估计的值和PINTO算法进行DPC

4.行检测法

根据单行或者多行数据进行检测和矫正,降低对硬件buffer的要求。

四、代码

PINTO算法代码参考https://blog.csdn.net/wtzhu_13/article/details/119077642

中值梯度滤波法

clc;clear;close all;
tic;
% --------global velue---------
expandNum = 2;
Th1 = 30;
Th2 = 40;
% --------raw parameters-------
filePath = '../images/HisiRAW_4208x3120_8bits_RGGB.raw';
bayerFormat = 'RGGB';
bayerBits = 8;
row = 4208;
col = 3120;
% -----------------------------

rawData = readRaw(filePath, bayerBits, row, col);
[height, width, channel] = size(rawData);

img_expand = expandRaw(rawData, expandNum);

disImg = zeros(height, width);
for i = expandNum+1 : 2 : height+expandNum
    for j = expandNum+1 : 2 : width+expandNum
        % R
        % get the pixel around the current R pixel
        around_R_pixel = [img_expand(i-2, j-2) img_expand(i-2, j) img_expand(i-2, j+2) img_expand(i, j-2) img_expand(i, j+2) img_expand(i+2, j-2) img_expand(i+2, j) img_expand(i+2, j+2)];
        disImg(i-expandNum, j-expandNum) = gradJudgeDefectPixel(around_R_pixel, img_expand(i, j), Th1,Th2);
        % Gr
        % get the pixel around the current Gr pixel
        around_Gr_pixel = [img_expand(i-2, j-1) img_expand(i-2, j+1)  img_expand(i-2, j+3) img_expand(i, j-1) img_expand(i, j+3) img_expand(i+2, j-1

今天的文章坏点检测_电脑屏幕坏点检测「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/85387.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注