2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 ПО для повышения четкости. Ну или алгоритм
Сообщение07.02.2013, 15:12 
Аватара пользователя
Задача в том, чтобы по n одинаковым кадрам (фотоснимкам) получить более четкое изображение. Это уже сделано людьми, я только не в курсе как называются методы, алгоритмы, программы и т.д.
Поэтому опишу, как я это представляю, а если кто знает такое ПО, напишите пожалуйста.
Собственно, два варианта (и две немного разных задачи):

1) Делаем n снимков на которых ничто физически не движется. (Т.е. не облака, не животные, статическая картина) В каждом пикселе есть некий шум, поэтому усредняем и готово. И чтобы убрать возможный сдвиг из-за вибраций и т.д., сначала перебором смещений на указанное число пикселей по х и у находим смещение с максимальной корреляцией кадров, смещаем, далее снова усредняем шум. Этот метод дает возможность делать снимки, особенно ночные, более высокого качества (задача съесть шум, а если оптика фиговая и т д ясно что это другая тема)

2) Астрофотография: делается снимок удаленного объекта малого углового размера, получается размазанное пятно (набор пикселей с разрешением p угл.секунд/пикс.). Делаем $kn^2$ снимков со смещением на 1/n по x и y, затем каждую серию из k снимков усредняем по алгоритму 1, затем увеличиваем image в n раз (чтобы в каждом пикселе стало n x n пикселей), а затем исходя из того, что в каждом большом пикселе имеется усредненная сумма данных n x n маленьких пикселей (со смещением на m-ое кол-во пикселей по х и у, m=0..n), решаем систему уравнений и получаем изображение разрешением p/n угл.секунд/пикс.

Первый метод убирает шум, второй повышает разрешение.
Не отрицаю, что реально существующие методы могут как угодно отличаться, так что, если вы их знаете, ознакомьте меня с ними плиз.
А то придется писать своё ПО, а с графическими форматами возиться зело лень. ))

P.S. Да, всякого рода unsharp маски не предлагать, тут о другом речь.

----

Любопытства ради, поясню 2й метод на примере. Пусть фотографируемое изображение состоит из NxN пикселей (искомых, $A_{ij}$), а разрешение фотоприбора таково, что в каждый его пиксель, $B_{ij}$, попадает KxK пикселей исходного изображения. Пусть N=KM, т.е. MxM - это и есть размер сделанной фотографии.

(Каждое значение пусть это яркость, снимок ч/б или через фильтр, оцифрованная интенсивность пойманного излучения)

Делаем KxK снимков, получаем значения $B_{ij}^{pq}$, где p и q - индексы от 0 до K-1, обозначающие смещение поля (и номер снимка), i и j - индексы от 1 до M, означающие номера(координаты) пикселей фотографии.

Суммируем по индексам u и v от 1-K до K-1, потому что нужно охватить поле NxN полностью, выходя крайними большими пикселями за пределы поля в обе стороны по х и по у.

$$B_{ij}^{pq}=\frac{1}{(2K-1)^2}\sum^{K-1}_{u=1-K}\sum^{K-1}_{v=1-K}{A_{Ki+p+u,Kj+q+v}}$$

Получаем систему уравнений, $M^2K^2$ штук, а неизвестных сколько? Считаем: $N^2=M^2K^2$.

Поскольку поле обзора смещается, то для вычислений нужны значения маленьких пикселей $A_{ij}$ вне поля NxN, выбираем их произвольно, и пусть это 0 (а технически - это заслоняющая рамка), т.е. черный фон. При необходимости размер N увеличивается настолько, чтобы интересующее для обработки изображение (объект, звезда и т.д.) оказалось вне "тени", рождаемой вовлечением "заграничных" нулевых значений. Т.о. при вычислениях считаем при i,j<1 и при i,j>N $A_{ij}=0$

Здесь нужно сказать, что технически встает задача сместить поле обзора на величину кратную p/n угл.сек., что может оказаться также нетривиально, но это уже нужно решать инженерам, а не математикам. :-) Смещать на нанометры мы уже умеем, причем с большой скоростью, так что вполне возможна и ускоренная съемка этим методом, что позволит в сочетании с методом №1 снимать даже движущиеся объекты.

И ещё. Мы намеренно ставим условие, что более мелкие пиксели "хорошие" и оптика наша "хорошая" и каждый мелкий пиксель попадает только в один крупный пиксель. Хотя при учитывании механических особенностей смещения поля зрения с конкретными приборами всё становится сложнее, пиксели могут быть параллелограммами, и это в лучшем случае... задевать соседние большие пиксели... и т.д.

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

---

UPD: к этой всей математике задача со звёздочкой :-) Для векторного представления системы уравнений, составить матрицу коэффициентов при неизвестных. Должно получиться интересно :-)

 
 
 
 Re: ПО для повышения четкости. Ну или алгоритм
Сообщение07.02.2013, 19:33 
Аватара пользователя
Alex_J в сообщении #681052 писал(а):
а если кто знает такое ПО, напишите пожалуйста

МатЛаб - Image Processing Toolbox.

 
 
 
 Re: ПО для повышения четкости. Ну или алгоритм
Сообщение12.02.2013, 07:44 
Если вам известны величины сдвигов, то это обычная деконволюция: посоветованный выше matlab image toolbox + функция pinv должны сработать. В условиях, когда шаги неизвестны, неточны или есть деформации, это называется super resolution или upsampling. Например вот:
http://mentat.za.net/supreme/

 
 
 
 Re: ПО для повышения четкости. Ну или алгоритм
Сообщение12.02.2013, 21:23 
Аватара пользователя
Спасибо, это то что нужно :)
Хотя как всегда собственноручная реализация представляет особый интерес )

 
 
 
 Re: ПО для повышения четкости. Ну или алгоритм
Сообщение14.02.2013, 04:02 
так и статьи там все в открытом виде

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group