Слева — «сырые» кадры с устройства. Справа — обработка.
В этой статье постараюсь добиться максимального качества макроснимка от типичного usb-микроскопа. Такие устройства – не предназначены для получения художественных фотографий. Их задача — позволить быстро и легко рассмотреть мелкие детали предмета. Однако я постараюсь специальными условиями съемки, постобработкой и некоторыми другими способами отчасти нивелировать эти недостатки.
Статья написана «Just for Fun» и по сути является рассказом о пути поиска лучшего результата. Не стоит рассматривать ее как рекомендацию. Если вам нужна хорошая макрофотография — лучше всего воспользоваться для этого специальной аппаратурой.
USB-микроскоп
Все макроснимки в статье сделаны используя USB-микроскоп, предоставленный компанией Даджет (за что им большое спасибо!).
Само по себе устройство микроскопа достаточно типично для устройств этого класса. Web-камера закрепленная на подставке оснащена набором из 8 светодиодов для подсветки снимаемого объекта, и двумя поворотными дисками для регулировки фокуса и степени освещенности.
Микроскоп устанавливается на стол, включается подсветка, и под объектив кладется исследуемый предмет. После чего необходимо навести фокус, и с помощью программы из комплекта поставки — сделать снимок или записать видео. Фотографии сохраняются в формате jpg, а видео в формате avi (без сжатия).
Так как статья об этом устройстве уже публиковалась на geektimes.ru (рекомендую ознакомиться, в статье много классных фотографий и сравнений) то я не буду больше повторяться описывая само устройство и его функционал.
Для целей этой статьи достаточно знания того, что внутри устройство представляет собой web-камеру с дополнительным модулем подсветки и регулировки фокуса. Позволяет в реальном времени просматривать на компьютере изображение с увеличением в 20-200 раз, и имеет разрешение матрицы 1600*1280 пикселей.
Остальные характеристики устройства особого значения не имеют, но я еще скажу о нем несколько слов в конце статьи.
Часть 0. Снимок
Итак, первым делом необходимо получить изображение для обработки. Для этого можно воспользоваться стандартным приложением «MicroCapture» входящим в комплект поставки. Или любым другим, позволяющем захватывать кадры с web-камеры.
В качестве тестового изображения я использовал кусочек ткани, на нем хорошо заметны все типы артефактов.
Все кадры в статье я буду сохранять с разрешением 1600*1280 пикселей, так как это «родное» разрешение камеры. Использовать другое разрешение не имеет смысла, если мы хотим получить максимальное качество фотографий, т.к. алгоритмы интерполяции уничтожат часть информации и затруднят работу с шумами.
Посмотрим полученное изображение в 100% масштабе.
Видно что фотография сильно зашумлена. Начнем.
Часть первая. Динамический шум
Каким образом можно убрать шум с фотографии?
Шумы возникают из-за недостатка чувствительности матрицы. Можно представить (хоть это не совсем верно), что чувствительность, это просто коэффициент на который умножаются все данные пришедшие с матрицы. Понятно, что чем меньше света пришло на матрицу из за закрытой диафрагмы или короткой выдержки – тем на большее число нужно будет умножить данные с матрицы для того чтобы сохранить приемлемую яркость итоговой картинки, и тем больше будут заметны погрешности работы матрицы – т.е. шум.
Чтобы уменьшить шум – нужно понизить ISO (чувствительность), а для этого – либо больше открыть диафрагму, либо увеличить выдержку.
Но тут мы сталкиваемся и техническим ограничением – у данной web-камеры, как и у большинства других – чувствительность матрицы вообще не изменяется. Диафрагма – нерегулируемая, а выдержка – просто регулирует количество света. И именно ее меняет программа подстраиваясь под уровень освещенности.
Можно усилить внешнюю подсветку – но тогда придется сократить выдержку. Можно уменьшить подсветку – тогда выдержка увеличиться. В любом случае, фактическое количество света на матрице будет равным и соответственно шумы будут всегда одинаковыми (в темноте света недостаточно и сигнал с камеры просто умножается на коэффициент усиления, что приводит к еще большим шумам).
Итак. Мы не можем увеличить выдержку средствами камеры, значит остается делать это в обход нее. К примеру, можно сохранить несколько кадров, а потом склеить их в один, найдя среднее арифметическое для каждого пиксела. А еще лучше записать видео, из сотен кадров… Попробуем:
Изображение стало однозначно лучше, практически исчез «мелкий» шум. Но качество по-прежнему оставляет желать лучшего, остались яркие точки (3 из них выделены на рисунке желтыми полосками).
Дело в том, что шум создается случайными отклонениями от цвета который матрица считает «правильным». Но для дешевых матриц которые ставят в web-камеры – это «правильное» значение может быть ошибкой. Иными словами, математическое ожидание отклонений не стремиться к нулю.
Это можно легко увидеть если «склеить» ровную картинку, например, полностью расфокусировав изображение, чтобы не мешали лишние детали.
Один кадр. По клику — оригинал
Среднее из 200 кадров. Яркость увеличена в 2 раза, для наглядности.
Как видим шумы очень значительны. Некоторые пиксели вообще битые, другие образуют полосы и зоны искаженной цветопередачи. Если удаленный шум можно назвать динамическим, то этот – постоянный, или статический. Попробуем снять и его.
Статический шум
Первая мысль – можно использовать полученное выше изображение для коррекции кадра. Просто вычтем из изображения средний цвет и прибавим серый и увеличим контраст в 2 раза. В итоге получим изображение, наложив которое на любой кадр – мы отчасти сократим помехи.
Подобный принцип используется при постобработке в некоторых камерах, но в целом — это плохое решение. Битые пиксели – это отсутствие информации, и что бы мы на них не накладывали – информация ниоткуда не возьмется.
Частично рабочие пиксели – вызывают в лучшем случае сокращение динамического диапазона цветов, а в худшем – полное искажение цвета.
Другое решение – «распределить» влияние каждого пикселя матрицы по нескольким пикселям итогового изображения. Этого можно добиться если смещать снимаемый объект в небольших пределах, а потом «склеить» изображения учитывая смещения. Так чтобы каждая точка объекта представлена была только в одном пикселе совмещенного изображения.
Двигая кусочек ткани руками я получил такое изображение:
Для того чтобы склеить такие кадры – нужно вначале «стабилизировать» изображение, добиться полной неподвижности. Это можно сделать проанализировав движение, например, с помощью OpenCV, но я пошел по более простому пути – выполнив трекинг в сторонней программе.
После трекинга в AE, и «склейки» кадров моей утилитой – получим такой результат.
Заметно что шума нет, но появилось неприятная смазанность, вызванная тем, что при смещении изображение дрожало и размывалось.
Попробуем определить степень размытости изображения, чтобы исключить из склейки смазанные кадры. Для этого я пошел самым простым путем – вычислял сумму разницы между всеми соседними пикселями изображения. Чем более смазано изображение – тем более близки по цвету соседние пиксели, а значит общая сумма модулей разности – даст некую оценку размытости кадра. График размытости по тестовой выборке будет выглядеть так:
Хорошо видны зоны где я двигал изображение, и оно размазывалось (график в этих местах на несколько кадров опускается вниз). Отсекая смазанные кадры можно немного улучшить картинку, но значительного изменения не будет, движения слишком резкие. Я хотел еще улучшить результат, поэтому пошел дальше.
Автоматизация
Предпосылкой к дальнейшему явилось то, что у меня случайно оказался шаговый двигатель 28BYJ-48. Пусть лучше он двигает объект перед микроскопом. Для теста вполне достаточно сделать простой вращающийся рабочий стол.
Преимущества в отсутствии смазывания, и возни с дрожаниями, уходящим фокусом и т.п. Конечно удобнее всего закрепить двигатель прямо к микроскопу, для чего пришлось распечатать крепление, состоящее из трех фрагментов:
Но даже в таких условиях трекинг далеко не идеальный. При увеличении становится существенным rolling shutter и перспективные искажения, что приводит к искривлению картинки которые невозможно решить трекингом (пришлось переключиться на трекинг в Mocha, но всех проблем это не решило). Отчасти проблемы можно нивелировать если сравнивать все кадры последовательности с первым, и при наличии существенных отклонений — просто не учитывать этот кадр.
Для типичной последовательности график исключений выглядит так:
Видно, что со временем разброс накапливается, т.к. каждый кадр сравнивается с первым. Также заметны резкие скачки, эти точки соответствуют ошибкам трекинга.
Итогом работы стали изображения:
Огорчает малая глубина резкости, но это тоже поправимо. Пусть с оговорками, но склеить из нескольких изображений с разной точкой фокуса, одно, с большей глубиной резкости вполне возможно.
Результат:
Все изображения кликабельны.
А вот пример работы на обычном объекте (золотой сережке).
Обработка.
Заключение
В эксперименте использовался «Цифроскоп» предоставленный компанией Даджет.
Комментарии (30)
unwrecker
28.04.2015 13:30+1Купил такой на ebay. Весь линуксовый софт видит в нём максимальное разрешение как 640х480. Может 1600*1280 — тоже интерполяция?
Quiensabe Автор
28.04.2015 15:47В данном случае нет, там честные 1600*1280, т.к. матрица имеет такой размер. Правда частота кадров в этом случае падает до 7,5.
А вот 2560*2048, которые тоже «поддерживаются» устройством — это интерполяция.
kibergus
28.04.2015 23:23Подозреваю, что после ссылки на aliexpress в предыдущем посте много людей решили купить себе игрушку. Там же дешевле раз в шесть, но с разрешением в 640х480. Есть варианты немного подороже, но уже с сенсором 2.0 мегапикселя и выглядящие один в один с тем микроскопом, что в статье. Но у них тоже реальное разрешение 640х480.
Quiensabe Автор
28.04.2015 23:53+2Для интересующихся — сделал сравнение, с помощью микроскопа из статьи.
Это фрагмент. Слева — кадр 1600*1280. Справа — 640*480.
Фокус не трогал, вообще ничего кроме разрешения снимка не менял. Для сравнения растянул кадр 640*480 до размеров 1600*1280 в фотошопе и вырезал фрагмент из центра.
Видно, что слева деталей больше, и гораздо четче выражен шум. Значит это разрешение как минимум ближе к оригинальному разрешению матрицы.
Если интересно — полные кадры
habrastorage.org/files/929/f11/ebd/929f11ebd73f4441acee7a56550dda27.jpg
habrastorage.org/files/054/5d4/abf/0545d4abf0f14a3a88d95d33fbd17114.jpg
evtomax
28.04.2015 13:47А ещё у дешёвых камер есть неотключаемый аппаратный шумодав, который тупо размывает области с похожими цветами. Единственный способ обойти — путём уменьшения освещения увеличить шум так, чтобы областей с похожими цветами не осталось. Но придётся совмещать больше фотографий, чтобы подавить шум.
Quiensabe Автор
28.04.2015 16:11В данном случае шумодава к счастью нет. Есть настройка «резкости», которая усиливает шумы и добавляет контуры всем объектам, но ее можно регулировать.
beliakov
28.04.2015 14:32Можете расшарить исходные серии снимков? Хотелось бы самому поэкспериментировать. Цифрового микроскопа у меня нет, но я делал похожие вещи с видеороликами снятыми через телескоп.
Quiensabe Автор
28.04.2015 16:11Не все исходники сохранились, но вот например три серии file.sampo.ru/n6786z
Если нужно еще — пишите, могу снять интересующий предмет и выложить.beliakov
28.04.2015 17:00+1Попробовал прогнать фотографии сахара через Registax который вообще-то для обработки астрофото. Вроде что-то получилось (кликабельно):
Были проблемы с вращением (виден смаз в левой части фото). Как мне кажется, лучше не крутить а плавно перемещать по диагонали.Quiensabe Автор
28.04.2015 17:37+1Очень любопытно.
У меня из того исходника получилось 4 изображения (по 100 кадров на каждое).
Вот два из них
maaGames
28.04.2015 15:23+1Спасибо! Как раз жду, когда такой привезут (брал у братского народа с узким прищуром). Теперь знаю, как получить более качественные фото.
Quiensabe Автор
28.04.2015 15:54Поздравляю с покупкой!)
Советую не мучиться с движущимся предметом, игра по моему не стоит свеч.
Проще сделать несколько серий кадров немного сдвигая предмет каждый раз. Потом каждую серию — склеить, и собрать всё хотя бы в фотошопе (там есть функция автоподгонки слоев).
elite7
28.04.2015 19:08спасибо за материал, а какой алгоритм использовали для склеивания изображений с разными фокусами?
Quiensabe Автор
28.04.2015 19:42+1Использовалась сторонняя программа — HeliconFocus
elite7
18.05.2015 11:04Спасибо. А вот появился еще вопрос.
Все мы знаем, что в обычном фото можно делать панорамы — склеивать много фоток разных участков в одно большое с получением более хорошего качества.
А может ли работать панорамная технология для микроскопа?
Можно ли при большом увеличении 1000x, сделать 100 снимков — 10x10 квадратов и получить одно качественное фото при увеличении 100x?Quiensabe Автор
18.05.2015 16:11Да, конечно возможно. Я даже собирался показать такой прием в статье, но времени не хватило.
Правда есть нюансы:
Во-первых — фотографий нужно больше чем 100, т.к. необходимы зоны перекрытия, обычно занимающие до трети снимка.
Во вторых — панорамы тут могут быть двух видов: плоские и сферические.
Сферические — не обязательно с широким углом съемки, но они делаются поворачивая фотоаппарат вокруг фокальной точки объектива (точки схождения лучей). Это позволяет получить правильную панораму, без искажений, но это сложно конструктивно — нужно не двигать объект перед фокусом, а вращать сам микроскоп.
Плоские — это панорама снятая с разных точек, находящихся на одной высоте над объектом. Тут все проще по конструкции, т.к. можно просто двигать предмет, но могут возникать искажения, из-за перспективных сокращений.
Искажения на плоской панораме тем меньше, чем меньше глубина предмета. В идеале, при съемке совершенно плоского предмета — искажения будут отсутствовать вовсе.
Кроме того, искажения тем меньше, чем больше увеличение. Т.к. становится меньше угол съемки, соответственно лучи все ближе к параллельным.
На практике, это значит что если мы снимаем с большим увеличением (например с упомянутым 1000x) — все получится. Т.к. будет меньше угол съемки, и глубина резкости. А если снимать объект с небольшим увеличением (скажем 20x) — то нормальной картинки не будет, нужно городить сложную систему с поворотом объекта вокруг фокальной точки.
SKolotienko
28.04.2015 22:06А объектив настолько хорош, что двигая объект перед объективом, происходит только трансформация сдвига/поворота/масштабирования (афинные преобразования)? Никаких там бочек, подушек, различной резкости в разных частях фотографии и прочих прелестей дешевых объективов фотоаппаратов?
Quiensabe Автор
28.04.2015 23:11+1Увы — нет.
Именно поэтому для вычисления коррекции использовался проф. трекер, adobe mocha, который помимо перечисленного умеет «ловить» наклоны и искажения перспективы.
Кроме того шаговый двигатель поворачивает объект только в пределах трех градусов (туда/обратно). Этого вполне достаточно, а искажения становятся почти незаметны.
egigd
06.05.2015 05:47-1Вы меня, конечно, извините, но по-моему заниматься таким — это себя не уважать…
Куда проще купить за копейки советский микроскоп с набором объективов и присобачить к нему любую старенькую зеркалку или беззеркалку. Сразу получим картинку почти без шумов и куда более высокого разрешения.Quiensabe Автор
07.05.2015 03:04+1Вы меня конечно тоже извините, но по моему так писать/говорить — это других не уважать…
1. напишите статью как прикрутить зеркалку к старому микроскопу, и мы сравним результат по стоимости, простоте, удобству и соответствию типичным задачам. Обычно простые решения предусматривают как минимум 3D печать, а в моем случае она не нужна (кроме финальной части, которая не обязательна для получения нормальных снимков).
2. статья написана «Just for Fun», о чем сказано в самом начале. Никто не говорил что это лучший/дешевый/быстрый/качественный метод (но и не отрицал).
3. не у всех есть зеркалка. И даже беззеркалка, к которой легко, что-то прикрутить.
4. методика действительно работает в некоторых реальных задачах. К примеру — мой брат начинающий ювелир. Он использует этот микроскоп при работе, но для финальных снимков (показать клиенту) качество слишком низкое. С помощью моей утилитки, он может просто нажать кнопку захвата — программа сама возьмет 100 кадров, склеит, и получит на выходе приличную фотку. Если хочется еще лучше — можно поменять фокус и еще раз нажать. Склейка опять на автомате, но зона резкости больше.
Обычный микроскоп в данном случае непригоден, у него слишком сильное увеличение. Макрообъектив — дорог, да и у брата даже нет зеркалки куда его можно поставить.
В общем, это конечно частность, но реальная.
Реальней чем рассуждения, что ваше решение сходу подойдет всем, а кто так не думает — себя не уважает…egigd
07.05.2015 04:07+1Пластиковая заглушка для байонета (которая как правило снимается с байонета сразу после покупки и никогда больше не устанавливается назад), вырезаем в ней круг по внутреннему диаметру трубы микроскопа, вклеиваем туда трубку, свёрнутую из бумаги. Всё, фотоаппарат можно устанавливать на микроскоп без всякой 3D-печати. О чём тут статью писать?
А что до «нету», так «Цифроскоп» из этой статьи стоит 4500 рублей. За эти деньги можно купить на барахолках и старый советский микроскоп (1000-1500 рублей) и старенькую цифрозеркалку в хорошем состоянии (3 000 — 4 000 рублей).
При этом зеркалка в свободное от микроскопии время будет радовать вас обычными снимками.Quiensabe Автор
08.05.2015 01:14Даже если все так (хотя у меня в городе таких цен нет), вы забываете о:
1. в этой статье нет никакой привязки к модели микроскопа. Если у вас за 3000 можно купить цифрозеркалку, представляю цены на б/у usb-микроскоп… А уж если в Китае заказать, да еще и на вторичном рынке…
2. вы описываете одно применение конструкции — фотки микромира, а ведь применений может быть много. К примеру usb-микроскоп из статьи поддерживает увеличение от 20 до 200 раз. Зачем мне 300-кратный микроскоп для съемки ювелирных изделий?
Это частный случай, но ювелиры и нумизматы — одна из целевых групп подобных устройств. Почему вы считаете их потребности не существенными, если у вас лично таких нет?
Заметьте я не отрицаю что есть и другие способы. И сразу написал
Если вам нужна хорошая макрофотография — лучше всего воспользоваться для этого специальной аппаратурой.
Но если человек уже пользуется usb-микроскопом — почему бы ему не показать как сделать фотографии чуть лучше?egigd
08.05.2015 02:30А кто сказал про 300х?..
У меня старый советский школьный микроскоп ШМ-1, купленный когда-то на барахолке вообще рублей за 200-300, и к нему набор объективов с окулярами, дающий увеличение от 26х до 900х.
Если 26х много, то дешёвая зеркалка с китовым (самым дешёвым, идущим в комплекте) объективом, перевёрнутым задом наперёд (без каких-либо специальных приспособлений) позволяет снимать так:
Кстати, цена в 3000 — это в самой обычной Москве. Вот за такие деньги Nikon D3000: club.foto.ru/secondhand2/lot/sell.php?advert_id=104780Quiensabe Автор
08.05.2015 04:59Интересно, а на авито «Школьный микроскоп шм-1» — продается почему-то за 5000 р., можете неплохо подзаработать)). И увеличение он поддерживает от 50 до 300x. В то время как usb-микроскоп там же можно купить в 4 раза дешевле…
Но суть даже не в этом. Я то могу понять, что есть и другие пути, которые в каких-то случаях будут удобнее и/или выгоднее. Но почему вы не можете понять, что могут быть ситуации в которых ваше решение — не идеально? Будь оно идеальным всегда — зачем бы люди вообще покупали usb-микроскопы? А ведь покупают… не странно?
Я описал ситуацию — usb-микроскоп, уже есть, зеркалки и микроскопа нет — есть ли смысл покупать, что-то, городить кустарные соединения из бумаги, и выдумывать крепления? Или проще воспользоваться готовым устройством, специально предназначенным для этого. А с помощью простейшей постобработки — повысить качество до вполне приемлемого.
Если хоть одному человеку моя статья поможет — я буду доволен.
В целом я вашу позицию понял. Дальнейший диалог считаю неконструктивным, так как реально наблюдаю ситуацию которая по вашим словам невозможна. Спорить с реальностью считаю бессмысленным. Убеждать кого-то в интернете — тоже.
maaGames
09.05.2015 08:22Я был слишком жаден и заказал микроскоп с 1000 кратным увеличением. «Работает». Волос на экране получается в руку толщиной. Судя по калибровочной плёнке, 500х точно есть. В кавычках, потому что навести фокус нереально.( Площадь обзора около квадратного миллиметра, фокусное расстояние и того меньше. Наводя фокус на поверхность калибровочного листка, его задняя сторона уже не в фокусе. Всё решают доли миллиметра… С учётом конструкции микроскопа, пользоваться им нереально.
Так что, если кто-то хочет подобную игрушку себе купить, то лучше остановиться на 100-200 кратном, ими вполне можно что-то снять будет.
Примеры съёмки при 1000х. Как видно, пузырьки на одной стороне плёнки почти в фокусе, а рисунок, нанесённый на обратной стороне, уже вне фокуса. Толщина плёнки меньше защитной плёнки для планшета.
2 мегабайтаИсходная картинка
Улучшенное изображение из 10 кадров
ice2heart
HDR с цифрового микроскопа?
rechmp
Если Вы прочитаете статью, то поймете, что HDR использует совсем другие принципы, и отношения к борьбе с шумом дешевой веб камеры никакого не имеет.
Quiensabe Автор
Совершенно верно.
Косвенное отношение имеет только последний этап. Склейка нескольких фотографий с разным фокусом в одну.
Если вместо фокуса менять экспозицию кадра — можно было склеить HDR. Только вот особого смысла я в этом не вижу.