Зарегистрировано: 316




Помощь  Карта сайта

Текст дня

Газета «Завтра»

Дальше..

Фото дня

Санузел 3.jpg

Санузел 3.jpg



Воробино
Через турбуленцию к звездам
В блоге представлены фото с моего сетапа. Первую зиму телескоп пережил на кухне, летом поселился на балконе с видом на залив, на окраине Петербурга. См. статью про наблюдения через балконную дверь. На балконе сиинг лучше, но места меньше. В итоге, была сделана мини-опора, вместо штатной треноги, а теперь в планах ..
Письмо | Сообщение | ВКонтакте | Астрофорум |

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



2+2.jpg
Опубликовано в: Блог: Астрофото - как это работает?
Клуб: Обработка астрофото. Cъемка, сложение, постобработка
<--Астрофото
<--Любительская астрономия (ЛА)

0,99





О сложении, вычитании и других махинациях с битами
/pterodactilus vulgaris/
12.02.2020


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

К чему это я? Мы обленились и перестали думать. Мы пользуемся компьютерами и программами, это они думают за нас. Мы выбираем программы, соответствующие нашему интеллекту. У кого мозг устроен проще, выбирает простые и понятные всем программы, которыми можно пользоваться двумя пальцами, не думая и не прилагая усилий. Понятно, что такая программа должна делать все сама, на то она и ПРОГРАММА.
У кого с интеллектом получше, стоят перед выбором и ориентируются в вопросах, что делает та или иная программа. Такие понимают, что выбирают больше инструмент, с которым им придется работать и не столько руками, сколько головой.

С астро-фото дело обстоит примерно так же, где, в общем, мало кто понимает, как и зачем они что-то делают. Обычно все делают как все, или как советуют товарищи. Советы обычно раздают товарищи, относящиеся к первой категории, которые съели собаку на верном и проверенном подходе - бери больше, кидай дальше, думай меньше. Вторые думают прежде, чем брать и кидать. И обычно прежде подумают, стоит ли раздавать советы первым и смогут ли те ими воспользоваться. А если что и дают, так в первую очередь информацию к размышлению. Прослеживается некая связь.

Что такое астро-фото? Это звезды, галактики, планеты.. Ну и программы, куда без них. Звезды, галактики и планеты - это вселенная. Изучением вселенной всегда занималась наука, а не домохозяйки. Астро-фото, это отделившаяся от науки в сторону любительства ветвь, ныне доступная домохозяйкам. Снимают его все подряд, кто на телефоны, кто-то на телескопы, кто в интернете, неизвестно на что. И что из того? Надо ли сводить его до уровня приготовления щей? Закинул кислую капусту, макароны, кусок курятины и можно есть? На вкус и цвет, как известно.. В общем, нет. Это несъедобно. Щи, если говорить о кулинарии, готовят из говядины, капусту берут свежую, вместо макарон картофель, перчик и подают под водку в хорошей компании. И они ни разу не кислые, если это не банка из совкового гастронома.

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

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

С вступлением, вроде как все, далее речь пойдет об астро-фото. Сказ будет длинный и сначала немного теории.


Итак. У нас есть несколько снимков, как-то и на чем-то снятые, а на снимках изображены наши надежды продвинуться в иерархии местного астро-сообщества. Все говорят, что эти снимки нам надо как-то сложить. Отлично. Зададимся простым вопросом, зачем? А потом зададимся вопросом, как?

Умные головы скажут, складывать надо так, чтобы повысить SNR. Чтобы выделить слабый сигнал и уменьшить шумы. Это благородная цель. И приведут простое и известное обоснование - шум падает пропорционально 1/SQR(N), где N кол-во складываемых кадров. Все здорово, только есть пара моментов, упускаемых их виду.

Момент первый - шум падает при условии, что при сложении на сумме не генерируется новых шумов.
Второй момент - эта замечательная формула действует только для "белого" шума, имеющего хаотичную основу и не имеющего системной или постоянной составляющей.
И третий момент - для достижения значимого эффекта кадров понадобится очень много.
Насколько много? Считаем.

Здесь приводится несложный расчет, который показывает, что теоретически, при сложении 10000 кадров мы сможем увеличить SNR суммы на 3 младших разряда. Предположим, что мы волшебным образом накопили и сложили 10000 кадров, магически убрали все шумы и получили сигнал, уровнем в 3 недостающих разряда. 3 двоичных разряда, это, в простонародье, цифра 8. Много это или мало? Это 0,00012 или 1/100% динамического диапазона 16-ти разрядов (65535). "Потрясающий" воображение выигрыш! Давайте пересчитаем его в разницу в звездных величинах.

Считаем максимальную разницу сигнала для 16-ти разрядов X max = 2,5LOG(65535) = 12,04m
Считаем минимальную разницу сигнала для 1-го разряда X min = 2,5LOG(2) = 0,75m
Считаем дельту для 3-х разрядов X = 2,5LOG(8) = 2,26m

Переведем это на язык домохозяек. Если самая яркая звезда на сумме 10000 кадров имеет яркость 0m, то самая слабая звезда на сумме будет иметь яркость 12,04m. Чтобы не резать динамический диапазон, в тех же условиях имеем для исходных снимков: если самая яркая звезда на исходных снимках имеет яркость 0m, то самая слабая звезда будет иметь яркость 9,78m. За счет того, что мы уменьшили шумы сложением 10000 кадров, мы увеличили SNR и вытащили дополнительные 2,26 звездные величины. Данный расчет является сравнительным, чтобы показать, что дает абстрактное сложение в отношении шумов. На практике многое будет зависеть от технологии сложения, но об этом чуть позже.

Продолжим. О чем нам говорят эти магические цифры? Во-первых, о том, что без компрессии картинки битностью в 16 разрядов не способны переварить динамический диапазон больше 12m. Но наш телескоп показывает на фото звезды до 18m? Как, Холмс? Телескоп то показывает, да камера не может уложить всю глубину отображаемой картинки на матрице. Что при этом происходит? Происходит насыщение пикселя, яркая звезда выгорает, а слабая проявляется на грани шума, динамический диапазон обрезается. На деле все обстоит несколько хуже. Наша камера не дает реальных 16 бит, т.к. АЦП в норме дает 12, реже 14 и совсем редко 16 бит. На большее у нас просто не хватит денег.

Какая нужна разрядность камеры, чтобы отобразить звезды до 18m?
18m = 2,5 Log(x) => x = 16000000 или 2^24. Т.е. матрица для записи динамического диапазона в 18m должна иметь 24 разряда. А у нас 12 разрядов. И что мы в этом случае делаем? Сжимаем картинку, делая динамический диапазон нелинейным. Ну, не мы, конечно. Это делают за нас программы. Те, которые обрабатывают картинки на компьютере. Мы про это и знать не знаем.

Что нам дает выигрыш в 3 разряда? С учетом компрессии наши 2,26m превратятся в 2,5*log(8 * 18/12) = 2.7m при условии, что на снимке у нас самые слабые звезды были 18m. Значит, мы получим звезды до 18+2.7= 20.7m

А если снимков у нас не 10000, а всего 30? Тогда и заметного выигрыша в шумах не будет. Точнее, он будет 1^2/SQR(30) = 0.36, где шумы одиночного кадра принимаем за 1. На сумме 30 кадров мы уменьшили шумы в 2,77 раза, по сравнению с одиночным кадром.


О сложении

Когда мы складываем слабый сигнал, составляющий малые доли динамического диапазона, этот сигнал на сумме становится ярче и может занимать уже довольно значительную долю динамического диапазона. Полезный сигнал на снимках имеет системный характер, за счет чего при с ложении на сумме проявляются слабые звезды, рукава галактик и другие малоконтрастные объекты. Сигнал увеличивается потому, что имеет повторяющуюся структуру от кадра к кадру. Если полезный сигнал в пикселе имеет устойчивое значение, например, в 100 у.е., то сумма 30 кадров даст в этом пикселе 3000у.е. полезного сигнала.

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

Первый способ - это арифметическое сложение, где 2+2 дает 4, а не 2, как при усреднении или медиане. Можно умножать сигнал, можно делать с ним все, что угодно, травмируя исходную линейность изображения и сужая динамический диапазон. Нужно ли.. Снимок от этого никогда не выигрывает.
Второй способ - значительно увеличить SNR. Полезный сигнал при этом будет именно перемещаться вверх по уровню, занимая все более старшие разряды. Как это сделать? Сложить бесконечное количество кадров.
Третий и единственно правильный способ - комбинация первых двух. Т.е. складывать лайты так, чтобы сохранялась линейность и SNR увеличивался.

Что происходит при сложении с шумом? Шум имеет несколько составляющих - шумы чтения, тепловые шумы, шумы атмосферы и пр., и все они вносят свой вклад в результирующий шум. Одни шумы имеют хаотическую структуру и переменные значения на разных кадрах в одном и том же пикселе. Другие шумы, как и полезный сигнал, имеют системный и тоже повторяющийся от кадра к кадру характер.

Посмотрим на случайный шум. Под таким шумом мы подразумеваем целый комплекс шумов, генерируемых в т.ч. и камерой. Это шумы чтения, шумы усилителей, АЦП и пр. Если такой шум имеет, например, максимальное значение в 1 разряд (2^0=1), то диапазон его возможных значений ограничен двумя состояниями - 0 и 1. На некоторых кадрах в этом же пикселе он будет 0, на других 1. Если камера шумит сильно, шум может принять любое значение в диапазоне нескольких младших разрядов.

При сложении 30 кадров сумма этой шумовой составляющей даст на выходе меньше, чем K^2/SQR(30), где K разрядность шума. Точное значение уровня шума угадать невозможно, пока его не измерить. Можно предположить, что для K=1 на сумме это даст что-то среднее, в районе 0,36. В итоге (в теории), мы получаем SNR = 3000/0.36 = 8333

Если на исходных кадрах при съемке правильно заполнять гистограмму и сложить 30 кадров так, так что максимальный сигнал в пикселе на сумме составит 65536 у.е. (16 бит), а случайный шум останется на уровне 1-го разряда, SNR суммы составит 182041

SNR напрямую зависит от динамического диапазона матрицы. Отлично! Берем камеру с разрядностью побольше и дело в шляпе!

Посмотрим на тепловой шум матрицы. Матрица греется, тепловой шум повторяется от кадра к кадру, копится и на сумме проявляется в виде отдельного системного сигнала, не имеющего отношения к полезному сигналу. Чтобы его убрать, из полезного сигнала данный шум вычитают (применяют дарки). Что остается на выходе? На выходе остается случайный шум. Мы внесли в него новую долю хаоса и , в общем случае, вышли за рамки одного разряда (для случая abc(n1+n2)=2, где n1 и n2 имеют значения 0 или 1), т.е. результирующий шум после вычитания дарков стал занимать уже 2 разряда и превысил случайные шумы лайтов в 1 разряд.

Посмотрим на шумы атмосферы. Мы снимаем небо не в космосе, а атмосфера фонит. Этот эффект складывается из ряда факторов - засветка, смог, туман, прозрачность и пр. Все это, в совокупности, снижает контраст полученного изображения и привносит в лайты новый шум. Это значит, в нашем примере выше, где на сумме мы имеем максимальный сигнал в 65535 у.е., шум атмосферы составит ощутимую часть динамического диапазона матрицы, снижая разрядность полезного сигнала в полученном изображении. От снимка к снимку его уровень будет плавать в неких пределах и будет тем ниже, чем темнее, чище и прозрачнее небо. При сложении этот шум тоже будет складываться, внося некую постоянную шумовую составляющую в сумму, значительно превосходящую уровень случайных шумов.

Например, на наших реальных снимках SNR составляет 30 db (отношение в 1000 раз), что соответствует довольно хорошему небу. Это означает, что динамический диапазон полезного сигнала составит 2^10 (1024) , т.е. займет 10 старших разрядов. Тогда шум атмосферы и остальные шумы займут младшие 6 разрядов матрицы или 2^6=64 у.е., которые имеют в своей базе системный характер и тоже пойдут в сложение.

Чтобы при сложении на сумме 30 кадров получить полезный сигнал в 65535 у.е. без обрезания динамического диапазона, исходный сигнал единичного лайта должен быть 65535/30, или 2184 у.е.
Шумы исходного лайта уменьшаем также пропорционально: 64/30 = 2,13у.е.
Теперь давайте посчитаем SNR для исходного лайта с учетом шумов атмосферы и частичной заполненности гистограммы: 2184/2,13 = 949
Что это значит? SNR упал с 1000 до 949. Почему же он упал? Да потому, что сузился динамический диапазон полезного сигнала.

А если мы наплевали на выгорание ярких звезд и тащим слабый сигнал по максимуму? Тогда, если мы сложим наши 30 кадров, получим уровень шума в 64*30=1920у.е., а SNR составит 65536/1920=34,13. Посчитаем это в db: SNR_db = 20 * log(34,1) = 30.65db, т.е. SNR чуть чуть вырос. Но какой ценой? Кадр-то пойдет в помойку. Как же так, дорогие россияне? Мы складывали, складывали и ничего не выиграли?

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

Перейдем к выводам. Чтобы уменьшить шумы суммы и вытянуть самый слабый сигнал, нам следует (в порядке приоритетности)

1. Снимать под максимально темным и прозрачным небом
2. Использовать максимальную разрядность камеры при съемке и разрядность программ обработки
3. Складывать как можно больше кадров

Вышесказанное наводит на размышления, что с точки зрения повышения SNR, способ сложения кадров не имеет принципиального значения - сумма, среднее, медиана. SNR результата останется примерно одинаковым. Но не сигнал! Он будет разным в каждом случае.

Разница в том, что усреднение и медиана дадут тот же полезный сигнал, что и на исходниках - слабые звезды не вылезут, рукава галактики не проявятся, сколько ни тяни их потом кривыми в фотошопе. Суммирование снимков позволяет усилить слабый сигнал и заполнить динамический диапазон суммы до предела. При суммировании слабый сигнал начинает проявляться, занимая все более старшие разряды и становится устойчиво разрешимым на сумме. Но и шум атмосферы с его постоянной составляющей - это тоже сигнал, хоть и паразитный. Он тоже пойдет вверх по разрядной лестнице. Итоговый SNR суммы при этом принципиально не изменится.

Поскольку нам важен результирующий динамический диапазон, т.е. заполнение гистограммы полезным сигналом, шум атмосферы (фон) при постобработке принудительно обрезается снизу до уровня едва различимого, т.е. гисторамма растягивается, позволяя полезному сигналу уместиться после обрезки на 16 разрядах, а не на 10, как было в исходниках. Этим достигается возврат изначально компрессированного сигнала в более широкий динамический диапазон снимка. Тем самым мы убираем (не совсем, конечно) системный шум атмосферы, но не случайный шум, которым был промодулирован полезный сигнал и постоянные шумы. Именно его мы видим, как зерно, когда растягиваем гистограмму, крутим кривые и уровни в фотошопе, пытаясь добавить контраста нашей картинке. Случайный шум тоже растягивается (усиливается), занимая больше разрядов снизу. И как нам от него избавиться? Традиционными способами при сложении никак, а в фотошопе и астро-программах применяются шумодавы.

О вычитании

Выше упоминалось, что тепловые шумы, в т.ч. amplifier glow (свечение краев или углов матрицы) убираются дарками, посредством вычитания их из лайтов . Также упоминалось, что эта операция вносит новую случайную составляющую в шумы. Что при этом происходит с лайтом? Системная составляющая убирается, на ее место добавляется случайная. Системный шум заменяется на хаотичный, пусть и меньший по уровню, чем системный, но больший, чем он был изначально на лайтах.

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

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

Какой отсюда следует вывод? Простой. Чем меньше время накопления сигнала на лайте, чем больше и лучше охлаждается матрица при съемке, чем темнее и чище небо, тем меньше нужны дарки. Более того - качественно снятым малошумящим лайтам дарки только навредят. Не более и не менее.

О махинациях

Дарки относительно хорошо убирают тепловой шум, при соблюдении ряда условий, которые обычно не соблюдаются. Это температура и выдержка. Даже если вы их сняли сразу после сессии, с той же выдержкой, гейном (ISO), не факт, что они подойдут под свежеиспеченные лайты. Температура матрицы, температура воздуха и влажность во время съемки все время "гуляют". Хуже обстоит дело со свечением усилителя (amplifier glow), которое тоже является "плавающим" и, главное - дарки совсем не убирают шумы атмосферы.

Убирают ли дарки горячие пиксели? И да, и нет. Горячие пиксели штука мало предсказуемая и переменчивая. Их появление зависит от температуры матрицы и длительности накопления, а бывают и битые пиксели, которые на снимках присутствуют всегда. Т.е. горячие пиксели могут быть как постоянными, так и случайными от кадра к кадру. В общем случае можно сказать, что дарки по горячим пикселям работают плохо и потребуется дополнительная очистка лайтов. Их можно убирать программно, по-пиксельно вымарывая из лайтов усреднением (если были сделаны подвижки во время съемки), интерполяцией соседних пикселей и пр., внося в исходное изображение сигнал, которого там изначально не было. А поскольку горячих пикселей на типовом снимке от много до очень много, можно представить, что за "художество" получается в итоге.

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

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

Взгляд сбоку

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

В PGMania технология "калибровки" разбита на отдельные этапы и вся обработка построена так, чтобы максимально сохранить и не искажать полезный сигнал - никаких фантомов и программной коррекции пикселей не производится в принципе. Если тепловые шумы или свечение матрицы значительны, из лайта вычитается дарк и делится на флэт. Это делается в качестве первой и опциональной операции в контейнере обработки. Биасы при этом не нужны принципиально, от слова совсем.

После этого делается попарная обработка лайтов - ряд операций вычитания, смещения и исключения в определенной последовательности, нацеленные на выделение случайного шума, отличного от полезного сигнала и его устранения из лайтов. При этом убирается не только случайный мусор но и все(!) горячие пиксели из калибруемой пары лайтов. Условием успешной обработки пары является идентичность сигнала и небольшое (>1-2 пикселей) смещение исходных лайтов калибруемой пары при съемке и точное совмещение пары лайтов по полезному сигналу при калибровке. Чем точнее совпадает сигнал на паре, тем лучше результат. Специально делать подвижки при съемке для этого не нужно, они получаются сами собой, даже при гидировании.

Сама "калибровка" не использует ничего, кроме лайтов. Принцип действия технологии основан на устранении любого несистемного сигнала. При этом новых шумов в откалиброванные снимки не вносится, случайные шумы убираются в значительной степени, новых шумов не вносится, увеличивается разрешение снимка, а итоговый SNR откалиброванного лайта значительно превосходит SNR исходного лайта. Результатом "калибровки" пары является эта же очищенная пара лайтов, содержащая чистый совпадающий сигнал. Шумы на ней тоже присутствуют, но в сотни раз меньшие, что приводит уже на лайтах к ощутимому повышению SNR b контраста изображения.

Сложение в PGMania делается различными алгоритмами (три базовых + комбинации), позволяющими сложить лайты и растянуть гистограмму суммы еще в процессе сложения, а не после, не прибегая к искусственному растяжению динамического диапазона при постобработке. Все это, в совокупности, дает заметный и очевидный выигрыш в SNR, презентативности результата и в достоверности сигнала на получаемой сумме.