Обнаружение, когда вид камеры заблокирован (черная рамка)
Я пытаюсь обнаружить подделку камеры (объектив заблокирован, что приводит к черной рамке). Подход, который я использовал до сих пор, состоит в том, чтобы применить вычитание фона и затем найти контуры после установки порога маски переднего плана. Затем я нахожу область каждого контура, и если область контура выше порогового значения (скажем, больше, чем 3/4 области кадра камеры), то говорят, что камера подделана. Хотя при попытке такого подхода появляется ложное предупреждение о несанкционированном вмешательстве, даже когда камера фиксирует полный обзор. Не уверен, как идти об этом обнаружении. Любая помощь будет высоко оценена
4 ответа
Возможной причиной этой ошибки могут быть легкие дрожания кадра, возникающие из-за легкого дрожания камеры.
Если ваш алгоритм вычитания фона недостаточно терпим к изменениям цвета с низким значением, тогда будет подано предупреждение о несанкционированном вмешательстве, даже если вы слегка встряхнете камеру.
Я бы предложил использовать MOG2 для вычитания фона
Одним из решений будет вычисление медианы изображения. Чем вы можете использовать простой порог по медиане, чтобы обнаружить заблокированную камеру. Конечно, медиана не является гибкой при обнаружении 3/4 заблокированной камеры. Но вы также сами циклически обрабатываете пиксели и подсчитываете пиксели, которые ниже определенного порога, а затем вычисляете процент заблокированного поля.
Вот ссылка, где вы можете увидеть, как вычислить медианную ссылку
Сделайте снимок с камеры и сохраните его. И запустите этот код Python. Если у вас нет библиотеки PIL, ее необходимо установить.
from PIL import Image
im = Image.open('yourCamSnapshot.jpg')
pixels = im.getdata()
blackThresh=30 #30 is RGB value
nblack=0
for pixel in pixels:
if(pixel[0]<=blackThresh and pixel[1]<=blackThresh and pixel[2]<=blackThresh):
nblack=nblack+1
n=len(pixels)
if (nblack / float(n)) > 0.8: #0.8 is 80% black
print("raise exception")
https://github.com/Amritanjan/detecting-when-the-camera-view-is-blocked можно использовать в качестве базового, его можно улучшить, если у нас будет более подробная информация об окружающей среде.