Программа для просмотра снимков Маринера-9

Мотивы для создания этой страницы, выбивающейся из общей тематики сайта, следующие:
во-первых, это часть задуманного автором обзора, сравнивающего программы "Марсов" и "Маринеров".
Во-вторых, обнаружилось, что предназначенная для просмотра снимков "Маринера-9" программа Питера Масека (
http://members.tripod.com/petermasek/mariner9.html ) отображает снимок неполностью.

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

Файлы с изображениями можно получить с сайта http://pds-imaging.jpl.nasa.gov/Admin/resources/cd_m71.html, поддиректории mr9iss*.

Ниже представлены корректное и обрезанное изображения (DAS09950719, телеобъектив):



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

Отличия от программы Масека следующие:

Алгоритмы коррекции изображения устроены следующим образом:

Коррекция шумовых пикселей.

Для рассматриваемой точки определяем яркости соседних восьми точек. Отбрасываем соседей с нулевым цветом (он считается фоновым). Отбрасываем точки с наибольшим и наименьшим значением яркости. Если после описанной процедуры у нас осталось на руках больше трех точек, находим границы диапазона яркостей [rmin ... rmax], в котором лежат эти точки. Задаемся величиной максимального допустимого градиента d (скажем, 20 ед. на пиксель из 256 возможных). Если яркость центральной точки выходит за пределы диапазона [rmin-d ... rmax+d], считаем центральную точку шумовой и заменяем ее яркость на среднее арифметическое яркостей выживших соседей из списка. Процедура выполняется для всех точек. Для достижения лучшего результата повторяется два-три раза.

Вероятно, все процедуры, выполняющие подобную работу, организованы схоже. Хотя возможны варианты, связанные, например, с размером рассматриваемой окрестности.

Особенностью, привязанной именно к данному типу изображений, является отбрасывание нулевых значений. У Масека этого, очевидно, не происходит, поэтому его вариант программы не корректирует довольно часто встречающиеся помехи типа пропущенных строк развертки (горизонтальные черные полосы).

Коррекция освещенности по полю.

Неравномерная освещенность поля зрения -- один из главных деффектов изображения при покадровой космической съемке. Представленная программа пытается (не всегда удачно) скорректировать освещенность автоматически. Для этого освещенность аппроксимируется плоскостью по методу наименьших квадратов. Затем линейная составляющая освещенности вычитается.

Для определения коэффициентов наклона аппроксимирующей плоскости используется разложение по первому порядку полиномов Чебышева (1, x, y).

Поскольку перекрестные члены и более высокие степиени разложения нас не интересуют, процедура сводится к определению средней освещенности по строке или столбцу (опять же за вычетом нулей) и домножению результата на полную ширину строки (столбца).

Координаты точек по горизонтали и вертикали преобразованием подобия переводятся на интервал [-1 .. 1], получившиеся функции интегрируются на этом отрезке с весами x и y.

Иногда применение этой процедуры приводит к появлению видимой "ступенчатости" на равномерно освещенных участках. Видимо, это связано с узостью цветового пространства (программа работает с 8-битными значениями цвета) и может быть исправлено его формальным "растяжением".

Увеличение контрастности изображения.

По краям цветового диапазона отбрасываются малоиспользуемые цвета (до десятой доли процента от общего числа пикселей).

Цветовое распределение смещается таким образом, чтобы по обе стороны от середины цветового диапазона находилось одинаковое количество цветов (как вариант -- максимум цветового распределения центрируется по ширине полосы цветов).

Затем распределение растягивается на полную ширину цветовой полосы [1..255].

Пример последовательного применения корректирующих алгоритмов (изображение DAS 09734769).


Сырое

Удален шум

Увеличена контрастность

Выровнена освещенность

Загрузка

Загрузить бинарную программу (53Kb, необходим VC runtime)
Загрузить исходники (для MSVC 7)
Загрузить mjpgTools.dll (350 Kb)

Программа сопровождается сторонней динамической библиотекой (mjpgTools.dll), предназначенной для создания файлов формата JPG. Данная библиотека распространяется на условиях GNU GPL.

KNOWN BUG: Программа не пишет файлов JPG, если монитор работает в режиме True Color (32 бит). Нужно сменить режим на High Color (16 бит) или ниже.

Hosted by uCoz