Python 在OpenCV中检测(并拒绝)计算机/电视屏幕拍摄的扭曲图像

Python 在OpenCV中检测(并拒绝)计算机/电视屏幕拍摄的扭曲图像,python,opencv,image-processing,image-thresholding,Python,Opencv,Image Processing,Image Thresholding,我的一些算法依赖于基于检测到的有效水平线的计数分割图像,从计算机屏幕或监视器拍摄的图像可能会有问题,因为当前的失真会导致较差的二值化和定义不清的区域 监视器的摄像头捕捉: 理想的情况是,相机拍摄的图像在渲染时不会因通过监视器拍摄而产生失真(数字显示),但是否可以使用opencv检测到以这种方式拍摄的图像,并因此在这种情况下拒绝拍摄(因为无法处理)?传感器(相机)将观察到的连续场景离散为不同的像素。 你提到的麻烦图像源,LCD/OLED数字显示器和CRT,将场景离散化为各自的像素, 所以我们有双

我的一些算法依赖于基于检测到的有效水平线的计数分割图像,从计算机屏幕或监视器拍摄的图像可能会有问题,因为当前的失真会导致较差的二值化和定义不清的区域

监视器的摄像头捕捉:

理想的情况是,相机拍摄的图像在渲染时不会因通过监视器拍摄而产生失真(数字显示),但是否可以使用opencv检测到以这种方式拍摄的图像,并因此在这种情况下拒绝拍摄(因为无法处理)?

传感器(相机)将观察到的连续场景离散为不同的像素。 你提到的麻烦图像源,LCD/OLED数字显示器和CRT,将场景离散化为各自的像素, 所以我们有双重离散化, 他们互相攻击。 这就解释了在示例图像中可见的恼人的莫尔图案

显然,您希望检测这种模式。考虑使用FFT。 拾取线段长度L和线段中心位置。 然后将一条直线旋转几个角度,从线段中读取像素并将其交给FFT。 莫尔图案至少在一个角度上呈现周期性。 在相同的角度下,相邻的线段中心将表现出相似的周期性

也许这是一个已解决的问题?

但也许“拒绝”并不是你真正的目标。 告诉我们故障模式,当您的算法遇到来自麻烦源的图像时会出现什么问题。 我们可以通过在图像上运行一个轻微的高斯模糊来处理离散化吗? 可能后面是反锐化掩蔽


您没有提到您是否可以控制图像的获取方式。 获取一对“同一场景”的图像, 在时间上相隔一秒左右, 会给你提供更多的信息。 如果传感器安装在三脚架上, 考虑移动它一毫米左右
在拍摄第二张图像之前。

短语“我的一些算法”和“图像”非常模糊。它们是“音乐和文字图像”的“OCR算法”吗?它们是“自拍”的“人脸识别算法”吗?帮助我们来帮助你——详细说明你希望实现的目标,以及目前阻碍实现这些目标的障碍。这不是小事。你如何定义这种噪音?一个非常基本的(当然也是不完整的)方法是,噪音似乎是周期性的。它有一定的振幅和频率。也许可以尝试在频域中检查图像,并在频谱中寻找可疑的增益脉冲。也许在你工作的时候可以查看功率谱密度,看看那里是否也能识别出噪声。