gpt4 book ai didi

c++ - 如何使用 OpenCV 检测和修复图像中的坏点?

转载 作者:太空宇宙 更新时间:2023-11-03 22:11:56 24 4
gpt4 key购买 nike

我有一些图像有坏点(或结果不好的像素)我有原始数据(拜耳数据)。

enter image description here

如何使用 OpenCV 检测和修复它们?

我尝试使用拜耳数据过滤器来修复它们。在我的算法中,我检测每个像素的颜色,如果它是绿色,则使用 X 模式找到相邻的绿色像素,如果当前像素的值超过相邻像素的 40 个,则像素值按相邻像素的平均值变化像素。

使用 + 模式对红色和蓝色做了同样的事情。

但这并没有解决问题。

有什么算法可以修复这些坏点吗?

最佳答案

我建议您使用 median filter为了这个目的。

C++: void medianBlur(InputArray src, OutputArray dst, int ksize)

过滤器的优点是它不是卷积。它不会处理操作(不意味着,没有你的邻居之间的平均计算)它只会从邻域中获取一个像素值(这恰好是你的邻居像素数组的中值)。

例如给定一个图像(一个颜色 channel )上的 3x3 窗口:

155 153  2    <- Noise here on the 3rd column
148 147 146
144 0 146 <- Noise here on the 2nd column

我们希望得到一个介于 144155 之间的像素值,对吗?

如果我们使用 mean filter我们计算平均值:(155+153+2+148+147+146+144+0+146)/9 = 116 这不是接近实际值。这就是您似乎所做的,因此结果不令人满意。

如果我们使用 median filter ,我们选择以下排序像素的中值 [0,2,144,146,146,147,148,153,155]
找到的中位数是 146,这更接近实际情况!

这里是一个具有 3x3 内核大小的中值过滤结果示例:

enter image description here enter image description here

在你的图像上使用相同的过滤器我得到:

enter image description here

关于c++ - 如何使用 OpenCV 检测和修复图像中的坏点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33670692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com