Странные артефакты изображения с камеры PS3 Eye

Я использую камеру PS3 Eye (модель 5SLEH-00448), чтобы делать фотографии с помощью OpenCV (C++) на Rapsberry Pi. Он работает через драйвер v4l2, который поддерживает только несжатый режим захвата YUYV. Я сохраняю изображения в формате PNG. Мне нужно несжатое изображение с максимально возможным качеством.

Пример изображения в формате 320x240 (понижается либо камерой, либо драйвером) - странные артефакты изображения видны на диагональных краях фотографий - при увеличении на верхнем крае ЖК-экрана появляется зигзагообразный артефакт, который выглядит как "лестница" :

Странные артефакты изображения с камеры PS3 Eye

Родные 640х480 камеры выглядят вполне прилично (много артефактов там не вижу):

введите описание изображения здесь

Вот режим захвата:

 $ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUYV

Кто-нибудь знает, что происходит? Похоже, родное изображение выглядит довольно хорошо, а артефакты, вероятно, возникают из-за алгоритма понижающей дискретизации в драйвере?

Ответы (1)

В формате YUYV канал яркости (Y), который управляет яркостью пикселей, имеет более высокое разрешение, чем каналы цветности (U и V), которые управляют оттенком. Каждый пиксель имеет свою собственную информацию о яркости, но два следующих пикселя имеют общее значение оттенка.

Ваше маленькое изображение выглядит так, как будто алгоритм понижающей дискретизации работал независимо на каналах Y и UV, игнорируя тот факт, что разные оттенки имеют разную воспринимаемую яркость. Это вызовет такие артефакты на вертикальных или диагональных краях, если не только яркость, но и оттенок будут меняться от одной стороны края к другой. Как видите, кромка между книжной полкой и стеной над монитором не так сильно пострадала, так как обе стороны кромки имеют одинаковый оттенок.

Я не знаком с программным обеспечением, которое вы используете, и не могу дать вам готовое решение, но если алгоритм понижения частоты дискретизации YUYV настолько сломан, возможно, вы можете преобразовать входное изображение в RGB перед понижением частоты дискретизации, а затем продолжить работу с данные RGB или преобразовать обратно в YUYV, если вам по какой-то причине нужно изображение с пониженной частотой дискретизации в формате YUYV?