Что можно «выжать» из usb-микроскопа


    Слева — «сырые» кадры с устройства. Справа — обработка.

    В этой статье постараюсь добиться максимального качества макроснимка от типичного usb-микроскопа. Такие устройства – не предназначены для получения художественных фотографий. Их задача — позволить быстро и легко рассмотреть мелкие детали предмета. Однако я постараюсь специальными условиями съемки, постобработкой и некоторыми другими способами отчасти нивелировать эти недостатки.

    Статья написана «Just for Fun» и по сути является рассказом о пути поиска лучшего результата. Не стоит рассматривать ее как рекомендацию. Если вам нужна хорошая макрофотография — лучше всего воспользоваться для этого специальной аппаратурой.

    USB-микроскоп


    Все макроснимки в статье сделаны используя USB-микроскоп, предоставленный компанией Даджет (за что им большое спасибо!).

    Само по себе устройство микроскопа достаточно типично для устройств этого класса. Web-камера закрепленная на подставке оснащена набором из 8 светодиодов для подсветки снимаемого объекта, и двумя поворотными дисками для регулировки фокуса и степени освещенности.

    Микроскоп устанавливается на стол, включается подсветка, и под объектив кладется исследуемый предмет. После чего необходимо навести фокус, и с помощью программы из комплекта поставки — сделать снимок или записать видео. Фотографии сохраняются в формате jpg, а видео в формате avi (без сжатия).

    Так как статья об этом устройстве уже публиковалась на geektimes.ru (рекомендую ознакомиться, в статье много классных фотографий и сравнений) то я не буду больше повторяться описывая само устройство и его функционал.

    Для целей этой статьи достаточно знания того, что внутри устройство представляет собой web-камеру с дополнительным модулем подсветки и регулировки фокуса. Позволяет в реальном времени просматривать на компьютере изображение с увеличением в 20-200 раз, и имеет разрешение матрицы 1600*1280 пикселей.

    Остальные характеристики устройства особого значения не имеют, но я еще скажу о нем несколько слов в конце статьи.

    Часть 0. Снимок


    Итак, первым делом необходимо получить изображение для обработки. Для этого можно воспользоваться стандартным приложением «MicroCapture» входящим в комплект поставки. Или любым другим, позволяющем захватывать кадры с web-камеры.


    В качестве тестового изображения я использовал кусочек ткани, на нем хорошо заметны все типы артефактов.

    Все кадры в статье я буду сохранять с разрешением 1600*1280 пикселей, так как это «родное» разрешение камеры. Использовать другое разрешение не имеет смысла, если мы хотим получить максимальное качество фотографий, т.к. алгоритмы интерполяции уничтожат часть информации и затруднят работу с шумами.

    Посмотрим полученное изображение в 100% масштабе.


    Видно что фотография сильно зашумлена. Начнем.

    Часть первая. Динамический шум


    Каким образом можно убрать шум с фотографии?
    Небольшое отступление для людей далеких от фотографии.
    Вся фотография, по сути основана на взаимосвязи трех главных параметров: чувствительности матрицы (ISO=100,200,400,… и т.п.), выдержки (задает время которое свет попадает на матрицу) и диафрагмы (размеру «окна» через которую свет падает на матрицу). Эти три числа определяют сколько света попадет на матрицу, и с какой погрешностью этот свет будет «оцифрован».

    Шумы возникают из-за недостатка чувствительности матрицы. Можно представить (хоть это не совсем верно), что чувствительность, это просто коэффициент на который умножаются все данные пришедшие с матрицы. Понятно, что чем меньше света пришло на матрицу из за закрытой диафрагмы или короткой выдержки – тем на большее число нужно будет умножить данные с матрицы для того чтобы сохранить приемлемую яркость итоговой картинки, и тем больше будут заметны погрешности работы матрицы – т.е. шум.

    Чтобы уменьшить шум – нужно понизить ISO (чувствительность), а для этого – либо больше открыть диафрагму, либо увеличить выдержку.
    Но тут мы сталкиваемся и техническим ограничением – у данной web-камеры, как и у большинства других – чувствительность матрицы вообще не изменяется. Диафрагма – нерегулируемая, а выдержка – просто регулирует количество света. И именно ее меняет программа подстраиваясь под уровень освещенности.

    Можно усилить внешнюю подсветку – но тогда придется сократить выдержку. Можно уменьшить подсветку – тогда выдержка увеличиться. В любом случае, фактическое количество света на матрице будет равным и соответственно шумы будут всегда одинаковыми (в темноте света недостаточно и сигнал с камеры просто умножается на коэффициент усиления, что приводит к еще большим шумам).

    Итак. Мы не можем увеличить выдержку средствами камеры, значит остается делать это в обход нее. К примеру, можно сохранить несколько кадров, а потом склеить их в один, найдя среднее арифметическое для каждого пиксела. А еще лучше записать видео, из сотен кадров… Попробуем:



    Изображение стало однозначно лучше, практически исчез «мелкий» шум. Но качество по-прежнему оставляет желать лучшего, остались яркие точки (3 из них выделены на рисунке желтыми полосками).



    Дело в том, что шум создается случайными отклонениями от цвета который матрица считает «правильным». Но для дешевых матриц которые ставят в web-камеры – это «правильное» значение может быть ошибкой. Иными словами, математическое ожидание отклонений не стремиться к нулю.

    Это можно легко увидеть если «склеить» ровную картинку, например, полностью расфокусировав изображение, чтобы не мешали лишние детали.

    Один кадр. По клику — оригинал

    Среднее из 200 кадров. Яркость увеличена в 2 раза, для наглядности.

    Как видим шумы очень значительны. Некоторые пиксели вообще битые, другие образуют полосы и зоны искаженной цветопередачи. Если удаленный шум можно назвать динамическим, то этот – постоянный, или статический. Попробуем снять и его.

    Статический шум


    Первая мысль – можно использовать полученное выше изображение для коррекции кадра. Просто вычтем из изображения средний цвет и прибавим серый и увеличим контраст в 2 раза. В итоге получим изображение, наложив которое на любой кадр – мы отчасти сократим помехи.



    Подобный принцип используется при постобработке в некоторых камерах, но в целом — это плохое решение. Битые пиксели – это отсутствие информации, и что бы мы на них не накладывали – информация ниоткуда не возьмется.
    Частично рабочие пиксели – вызывают в лучшем случае сокращение динамического диапазона цветов, а в худшем – полное искажение цвета.

    Другое решение – «распределить» влияние каждого пикселя матрицы по нескольким пикселям итогового изображения. Этого можно добиться если смещать снимаемый объект в небольших пределах, а потом «склеить» изображения учитывая смещения. Так чтобы каждая точка объекта представлена была только в одном пикселе совмещенного изображения.

    Двигая кусочек ткани руками я получил такое изображение:



    Для того чтобы склеить такие кадры – нужно вначале «стабилизировать» изображение, добиться полной неподвижности. Это можно сделать проанализировав движение, например, с помощью OpenCV, но я пошел по более простому пути – выполнив трекинг в сторонней программе.

    После трекинга в AE, и «склейки» кадров моей утилитой – получим такой результат.


    Заметно что шума нет, но появилось неприятная смазанность, вызванная тем, что при смещении изображение дрожало и размывалось.

    Попробуем определить степень размытости изображения, чтобы исключить из склейки смазанные кадры. Для этого я пошел самым простым путем – вычислял сумму разницы между всеми соседними пикселями изображения. Чем более смазано изображение – тем более близки по цвету соседние пиксели, а значит общая сумма модулей разности – даст некую оценку размытости кадра. График размытости по тестовой выборке будет выглядеть так:



    Хорошо видны зоны где я двигал изображение, и оно размазывалось (график в этих местах на несколько кадров опускается вниз). Отсекая смазанные кадры можно немного улучшить картинку, но значительного изменения не будет, движения слишком резкие. Я хотел еще улучшить результат, поэтому пошел дальше.

    Автоматизация


    Предпосылкой к дальнейшему явилось то, что у меня случайно оказался шаговый двигатель 28BYJ-48. Пусть лучше он двигает объект перед микроскопом. Для теста вполне достаточно сделать простой вращающийся рабочий стол.

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



    Но даже в таких условиях трекинг далеко не идеальный. При увеличении становится существенным rolling shutter и перспективные искажения, что приводит к искривлению картинки которые невозможно решить трекингом (пришлось переключиться на трекинг в Mocha, но всех проблем это не решило). Отчасти проблемы можно нивелировать если сравнивать все кадры последовательности с первым, и при наличии существенных отклонений — просто не учитывать этот кадр.

    Для типичной последовательности график исключений выглядит так:



    Видно, что со временем разброс накапливается, т.к. каждый кадр сравнивается с первым. Также заметны резкие скачки, эти точки соответствуют ошибкам трекинга.

    Итогом работы стали изображения:

    ткань

    сахар и капля варенья

    Огорчает малая глубина резкости, но это тоже поправимо. Пусть с оговорками, но склеить из нескольких изображений с разной точкой фокуса, одно, с большей глубиной резкости вполне возможно.

    Результат:




    Все изображения кликабельны.

    А вот пример работы на обычном объекте (золотой сережке).

    Убран только обычный шум + сшито 2 изображения с разной глубиной фокусировки,
    «Сырой» кадр.

    Обработка.


    Заключение

    В эксперименте использовался «Цифроскоп» предоставленный компанией Даджет.
    Даджет
    Company
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 30

      –1
      HDR с цифрового микроскопа?
        +5
        Если Вы прочитаете статью, то поймете, что HDR использует совсем другие принципы, и отношения к борьбе с шумом дешевой веб камеры никакого не имеет.
          +1
          Совершенно верно.

          Косвенное отношение имеет только последний этап. Склейка нескольких фотографий с разным фокусом в одну.
          Если вместо фокуса менять экспозицию кадра — можно было склеить HDR. Только вот особого смысла я в этом не вижу.
        +1
        Купил такой на ebay. Весь линуксовый софт видит в нём максимальное разрешение как 640х480. Может 1600*1280 — тоже интерполяция?
          0
          В данном случае нет, там честные 1600*1280, т.к. матрица имеет такой размер. Правда частота кадров в этом случае падает до 7,5.
          А вот 2560*2048, которые тоже «поддерживаются» устройством — это интерполяция.
            0
            Подозреваю, что после ссылки на aliexpress в предыдущем посте много людей решили купить себе игрушку. Там же дешевле раз в шесть, но с разрешением в 640х480. Есть варианты немного подороже, но уже с сенсором 2.0 мегапикселя и выглядящие один в один с тем микроскопом, что в статье. Но у них тоже реальное разрешение 640х480.
              +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
            0
            А ещё у дешёвых камер есть неотключаемый аппаратный шумодав, который тупо размывает области с похожими цветами. Единственный способ обойти — путём уменьшения освещения увеличить шум так, чтобы областей с похожими цветами не осталось. Но придётся совмещать больше фотографий, чтобы подавить шум.
              0
              В данном случае шумодава к счастью нет. Есть настройка «резкости», которая усиливает шумы и добавляет контуры всем объектам, но ее можно регулировать.
              0
              Можете расшарить исходные серии снимков? Хотелось бы самому поэкспериментировать. Цифрового микроскопа у меня нет, но я делал похожие вещи с видеороликами снятыми через телескоп.
                0
                Не все исходники сохранились, но вот например три серии file.sampo.ru/n6786z
                Если нужно еще — пишите, могу снять интересующий предмет и выложить.
                  +1
                  Попробовал прогнать фотографии сахара через Registax который вообще-то для обработки астрофото. Вроде что-то получилось (кликабельно):

                  image

                  Были проблемы с вращением (виден смаз в левой части фото). Как мне кажется, лучше не крутить а плавно перемещать по диагонали.
                    +1
                    Очень любопытно.
                    У меня из того исходника получилось 4 изображения (по 100 кадров на каждое).
                    Вот два из них


                    Видно что:
                    1. у вас глубина резкости как у обоих моих снимков сразу, т.е. Registax при склейке сразу выбирает наиболее четкие фрагменты — круто.
                    2. смазов у меня меньше, т.к. я выполнял трекинг в Mocha, который учитывает перспективные искажения (ось вращения не направлена строго в камеру), а в Registax полагаю они не учитываются, т.к. в астроснимках их быть не может.

                    На счет смещения по диагонали — согласен. Но такую конструкцию сложнее сделать автоматической, поэтому остановился на простом вращении. Изначально была идея сделать столик который бы двигался по кругу, но не вращался. Даже придумал довольно простую механику для этого:

                    Но в итоге отказался. Времени не было, а печатать зубчатые колесики — долго, т.к. их не сделать маленькими, качества печати не хватит.
                +1
                Спасибо! Как раз жду, когда такой привезут (брал у братского народа с узким прищуром). Теперь знаю, как получить более качественные фото.
                  0
                  Поздравляю с покупкой!)
                  Советую не мучиться с движущимся предметом, игра по моему не стоит свеч.
                  Проще сделать несколько серий кадров немного сдвигая предмет каждый раз. Потом каждую серию — склеить, и собрать всё хотя бы в фотошопе (там есть функция автоподгонки слоев).
                    0
                    Думаю, меня вполне устроит простое усреднение между серией снимков. Разумеется с последующей обработкой.
                      0
                      Фотка сережки в конце поста именно так и сделана. Только там два кадра сшито с разной глубиной резкости.
                  0
                  спасибо за материал, а какой алгоритм использовали для склеивания изображений с разными фокусами?
                    +1
                    Использовалась сторонняя программа — HeliconFocus
                      0
                      Спасибо. А вот появился еще вопрос.

                      Все мы знаем, что в обычном фото можно делать панорамы — склеивать много фоток разных участков в одно большое с получением более хорошего качества.

                      А может ли работать панорамная технология для микроскопа?
                      Можно ли при большом увеличении 1000x, сделать 100 снимков — 10x10 квадратов и получить одно качественное фото при увеличении 100x?
                        0
                        Да, конечно возможно. Я даже собирался показать такой прием в статье, но времени не хватило.

                        Правда есть нюансы:

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

                        Во вторых — панорамы тут могут быть двух видов: плоские и сферические.

                        Сферические — не обязательно с широким углом съемки, но они делаются поворачивая фотоаппарат вокруг фокальной точки объектива (точки схождения лучей). Это позволяет получить правильную панораму, без искажений, но это сложно конструктивно — нужно не двигать объект перед фокусом, а вращать сам микроскоп.

                        Плоские — это панорама снятая с разных точек, находящихся на одной высоте над объектом. Тут все проще по конструкции, т.к. можно просто двигать предмет, но могут возникать искажения, из-за перспективных сокращений.

                        Искажения на плоской панораме тем меньше, чем меньше глубина предмета. В идеале, при съемке совершенно плоского предмета — искажения будут отсутствовать вовсе.

                        Кроме того, искажения тем меньше, чем больше увеличение. Т.к. становится меньше угол съемки, соответственно лучи все ближе к параллельным.

                        На практике, это значит что если мы снимаем с большим увеличением (например с упомянутым 1000x) — все получится. Т.к. будет меньше угол съемки, и глубина резкости. А если снимать объект с небольшим увеличением (скажем 20x) — то нормальной картинки не будет, нужно городить сложную систему с поворотом объекта вокруг фокальной точки.
                    0
                    А объектив настолько хорош, что двигая объект перед объективом, происходит только трансформация сдвига/поворота/масштабирования (афинные преобразования)? Никаких там бочек, подушек, различной резкости в разных частях фотографии и прочих прелестей дешевых объективов фотоаппаратов?
                      +1
                      Увы — нет.
                      Именно поэтому для вычисления коррекции использовался проф. трекер, adobe mocha, который помимо перечисленного умеет «ловить» наклоны и искажения перспективы.
                      Кроме того шаговый двигатель поворачивает объект только в пределах трех градусов (туда/обратно). Этого вполне достаточно, а искажения становятся почти незаметны.
                      –1
                      Вы меня, конечно, извините, но по-моему заниматься таким — это себя не уважать…
                      Куда проще купить за копейки советский микроскоп с набором объективов и присобачить к нему любую старенькую зеркалку или беззеркалку. Сразу получим картинку почти без шумов и куда более высокого разрешения.
                        +1
                        Вы меня конечно тоже извините, но по моему так писать/говорить — это других не уважать…

                        1. напишите статью как прикрутить зеркалку к старому микроскопу, и мы сравним результат по стоимости, простоте, удобству и соответствию типичным задачам. Обычно простые решения предусматривают как минимум 3D печать, а в моем случае она не нужна (кроме финальной части, которая не обязательна для получения нормальных снимков).

                        2. статья написана «Just for Fun», о чем сказано в самом начале. Никто не говорил что это лучший/дешевый/быстрый/качественный метод (но и не отрицал).

                        3. не у всех есть зеркалка. И даже беззеркалка, к которой легко, что-то прикрутить.

                        4. методика действительно работает в некоторых реальных задачах. К примеру — мой брат начинающий ювелир. Он использует этот микроскоп при работе, но для финальных снимков (показать клиенту) качество слишком низкое. С помощью моей утилитки, он может просто нажать кнопку захвата — программа сама возьмет 100 кадров, склеит, и получит на выходе приличную фотку. Если хочется еще лучше — можно поменять фокус и еще раз нажать. Склейка опять на автомате, но зона резкости больше.
                        Обычный микроскоп в данном случае непригоден, у него слишком сильное увеличение. Макрообъектив — дорог, да и у брата даже нет зеркалки куда его можно поставить.

                        В общем, это конечно частность, но реальная.
                        Реальней чем рассуждения, что ваше решение сходу подойдет всем, а кто так не думает — себя не уважает…
                          +1
                          Пластиковая заглушка для байонета (которая как правило снимается с байонета сразу после покупки и никогда больше не устанавливается назад), вырезаем в ней круг по внутреннему диаметру трубы микроскопа, вклеиваем туда трубку, свёрнутую из бумаги. Всё, фотоаппарат можно устанавливать на микроскоп без всякой 3D-печати. О чём тут статью писать?
                          А что до «нету», так «Цифроскоп» из этой статьи стоит 4500 рублей. За эти деньги можно купить на барахолках и старый советский микроскоп (1000-1500 рублей) и старенькую цифрозеркалку в хорошем состоянии (3 000 — 4 000 рублей).
                          При этом зеркалка в свободное от микроскопии время будет радовать вас обычными снимками.
                            0
                            Даже если все так (хотя у меня в городе таких цен нет), вы забываете о:

                            1. в этой статье нет никакой привязки к модели микроскопа. Если у вас за 3000 можно купить цифрозеркалку, представляю цены на б/у usb-микроскоп… А уж если в Китае заказать, да еще и на вторичном рынке…

                            2. вы описываете одно применение конструкции — фотки микромира, а ведь применений может быть много. К примеру usb-микроскоп из статьи поддерживает увеличение от 20 до 200 раз. Зачем мне 300-кратный микроскоп для съемки ювелирных изделий?
                            Это частный случай, но ювелиры и нумизматы — одна из целевых групп подобных устройств. Почему вы считаете их потребности не существенными, если у вас лично таких нет?

                            Заметьте я не отрицаю что есть и другие способы. И сразу написал
                            Если вам нужна хорошая макрофотография — лучше всего воспользоваться для этого специальной аппаратурой.
                            Но если человек уже пользуется usb-микроскопом — почему бы ему не показать как сделать фотографии чуть лучше?
                              0
                              А кто сказал про 300х?..
                              У меня старый советский школьный микроскоп ШМ-1, купленный когда-то на барахолке вообще рублей за 200-300, и к нему набор объективов с окулярами, дающий увеличение от 26х до 900х.
                              Если 26х много, то дешёвая зеркалка с китовым (самым дешёвым, идущим в комплекте) объективом, перевёрнутым задом наперёд (без каких-либо специальных приспособлений) позволяет снимать так:
                              Макро
                              Кстати, цена в 3000 — это в самой обычной Москве. Вот за такие деньги Nikon D3000: club.foto.ru/secondhand2/lot/sell.php?advert_id=104780
                                0
                                Интересно, а на авито «Школьный микроскоп шм-1» — продается почему-то за 5000 р., можете неплохо подзаработать)). И увеличение он поддерживает от 50 до 300x. В то время как usb-микроскоп там же можно купить в 4 раза дешевле…

                                Но суть даже не в этом. Я то могу понять, что есть и другие пути, которые в каких-то случаях будут удобнее и/или выгоднее. Но почему вы не можете понять, что могут быть ситуации в которых ваше решение — не идеально? Будь оно идеальным всегда — зачем бы люди вообще покупали usb-микроскопы? А ведь покупают… не странно?

                                Я описал ситуацию — usb-микроскоп, уже есть, зеркалки и микроскопа нет — есть ли смысл покупать, что-то, городить кустарные соединения из бумаги, и выдумывать крепления? Или проще воспользоваться готовым устройством, специально предназначенным для этого. А с помощью простейшей постобработки — повысить качество до вполне приемлемого.
                                Если хоть одному человеку моя статья поможет — я буду доволен.

                                В целом я вашу позицию понял. Дальнейший диалог считаю неконструктивным, так как реально наблюдаю ситуацию которая по вашим словам невозможна. Спорить с реальностью считаю бессмысленным. Убеждать кого-то в интернете — тоже.
                        0
                        Я был слишком жаден и заказал микроскоп с 1000 кратным увеличением. «Работает». Волос на экране получается в руку толщиной. Судя по калибровочной плёнке, 500х точно есть. В кавычках, потому что навести фокус нереально.( Площадь обзора около квадратного миллиметра, фокусное расстояние и того меньше. Наводя фокус на поверхность калибровочного листка, его задняя сторона уже не в фокусе. Всё решают доли миллиметра… С учётом конструкции микроскопа, пользоваться им нереально.
                        Так что, если кто-то хочет подобную игрушку себе купить, то лучше остановиться на 100-200 кратном, ими вполне можно что-то снять будет.

                        Примеры съёмки при 1000х. Как видно, пузырьки на одной стороне плёнки почти в фокусе, а рисунок, нанесённый на обратной стороне, уже вне фокуса. Толщина плёнки меньше защитной плёнки для планшета.

                        2 мегабайта
                        Исходная картинка


                        Улучшенное изображение из 10 кадров


                        Only users with full accounts can post comments. Log in, please.