Собсно, вводная. Постараюсь попроще, но так чтоб сильно не переврать

Что такое вебкамера? Это объектив, вместо которого у нас теперь телескоп (у каждого он свой, по этому опускаем), матрица (массив светочувствительных элементов, тосамое, ради чекго всё остальное), видеопроцессор, и собсно сам интерфейс (сюда включаем как тракт передачи так и драйвер, то есть всё, что доносит до нас ту самую интересующую цифру).
Если абстрагироватся от технологии изготовления, любой субпиксел (именно так следует называть элемент на матрице, см. ниже почему) можно понимать как конденсатор, который заряжают (или разряжают, от технологии, суть не меняется) через фотодиод. Заряд, который накопился в этом конденсаторе, пропорционален напряжению на обкладках (ёмкость ведь неизменна). Это напряжение, при помощи специальной коммутационной решётки подключают к АЦП и измеряют, и так мы получаем цифру, пропорциональную заряду, накопленному субпикселом. Именно так, всё просто.
Так вот, непросто, скажу я вам. Вопервых, нелинейность самого фотодиода. Во вторых, его спектральный отклик. В третьих, темновой и тепловой ток (да-да, ток через него идёт даже в абсолютной темноте, увы. А значит, конденсатор он всёравно заряжает, хотя вродебы и не должен). Ну и вобщем ещё много чего, на что мы влиять неочень-то и сможем.
На этом бедствие не закончилось. Субпикселы, или почему картинка в цвете?
На самом деле, фотодиоды которые стоят в матрицах больше любят инфракрасный, с пиком отклика где-то на 670нм (он невидимый для глаза, чем и пользуются при "ночных съёмках" и в приборах ночного видения). ИК подсветку камер-наружек наверное видели все. И им по сути неочень любопытно, какой цвет. Только его яркость. Чтобы получать картинку в цвете, субпикселы накрывают
сеткой Байера, за счёт чего, у заданных субпикселов снижают чувствительность к некоторым цветам. Как несложно догадатся, картинка получится фасеткой и алиасинг не спасёт, по этому применяют специальные алгоритмы интерполяции, "благодаря" которым, выхлопная картинка получается.... на 3/4 состоящей из отсебятины камеры. Дабы этим алгоритмам дышалось легче, группу пикселов накрывают "сглаживающей" линзой, тоесть, понижают чёткость, только для того, чтобы апрокисмировалось аккуратнее. Ужас, да?
Казалось бы, уже хуже некуда. Ан нет: препроцессор.
Получаемая из АЦП картинка, обычно, 9 бит, не хуже, даже для самого-самого китайпрома. После пережовывания апроксиматором-дебайеризатором, корректором, шарпером, компенсатором и прочим улучшателем, обычно получается RGB888. Но слать в таком формате камера небудет - много, не пролезет. И картинку жмут. Обычно, MJPEG или YUY2 (других пока не встречал). Именно в таком виде она попадает в компьютер.
Теперь думаем. Весь процесс обработки был целочисленным. Тоесть, постоянно накапливалась погрешность округления. Формат передачи с прореживанием, тоесть минимум с 4х-кратными потерями, от уже утерянного изображения... ОТКУДА, я хочу вас спросить, может появиться красивая картинка?!
Трудно сказать, чем руководствуются производители, допуская такое опускание собственных продуктов. Единственное что приходит в голову: совместимость. И всё, других логичных объяснений нет.
Чтобы всё небыло настолько печально, производители ввели некоторые плюшки, вроде, гаммы, компенсации задней засветки, иных крутилочек... Они немножко помогают, интересующий фрагмент подсветить иногда получается, но ситуацию, вот так чтоб в корне, не спасают.
Вот в таких условиях и придётся работать
