首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >一种在Javascript中查找死像素的算法

一种在Javascript中查找死像素的算法
EN

Stack Overflow用户
提问于 2012-07-30 15:13:35
回答 3查看 1.9K关注 0票数 6

我正在尝试创建一种算法来检测和计数.csv格式的强度图中的死像素。我目前的方法是将我正在测试的像素的值除以紧邻右侧的像素值(或者,如果在最右侧,则除以左侧的值)。如果被除数小于某个阈值(当前为.9),则将其标记为死像素。

我的问题是,有没有更好/更有效的方法来计算像素是否死了?

csv输出示例:

代码语言:javascript
代码运行次数:0
运行
复制
3183    3176    3207    3183    3212
3211    3197    3198    3183    3191
3193    3177    1135    3185    3176
3175    3184    3188    3179    3181
3181    3165    3184    3187    3183

在这个例子中,中间的像素是一个“死”像素。

EN

回答 3

Stack Overflow用户

发布于 2012-07-30 15:56:36

Efficiency

您将需要至少查看每个像素一次,因此您的运行时间不可能超过当前的O(n),其中n是像素数。您的算法使用恒定的内存量,这也是最优的。

然而,我不确定你的算法是否总是正确的。你有没有办法避免比较连续的死像素?示例输入:

代码语言:javascript
代码运行次数:0
运行
复制
3183    3176    1135    1135    3212
                ^ Not detected

一种更精确的方法

我假设你采用相邻像素的强度,以避免比较屏幕不同区域的像素,因为屏幕的亮度可能不均匀分布。

避免假阴性的一种方法是取附近几个像素的平均值,但如果该区域中有大量死像素,则此方法可能不起作用。您可以尝试从较小区域中的所有像素中提取最大值。这样,只要整个区域中的一个像素没有死亡,所有的死亡像素都会被检测到。

您采样的像素数量将由您对假阴性的容忍度决定。

票数 2
EN

Stack Overflow用户

发布于 2012-07-30 15:56:47

在真实图像中,你可能会有一个合理的从亮到暗的清晰过渡,或者反之亦然--清晰的阴影线过渡到明亮的太阳,或者仅仅是黑色背景下白色物体的边缘。因此,只看右边的像素很容易产生一些假阳性。

不太可能产生假阳性的是将一个像素与其周围的四个像素中的至少每个像素(上、下、左、右)进行比较。您将允许一个像素和四个邻居中的两个像素之间存在明显差异,但不允许一个像素和所有四个邻居之间存在明显差异,因为在真实图像中出现一个像素奇异点的可能性很小。

如果您要求一个像素在(不同对象的)多个单独图像中测试失败,您甚至可以进一步消除假阳性。

至于如何进行这种计算的细节,你可以像你已经提出的那样做,但与所有四个邻居进行比较,或者在Google上搜索"dead pixel detection“,会得到大量关于各种想法的文章。

票数 1
EN

Stack Overflow用户

发布于 2012-07-31 05:42:39

如果这是一个现实生活中的问题(我们谈论的是相机中的死像素):

拍5张左右的照片。如果像素与其相邻像素具有明显不同的强度(f.e.11x11块的平均值,分别比较RGB )在大多数图片中,它几乎肯定是死的/卡住的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11716865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档