ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца ИЮЛЬ-АВГУСТ!
0 Пользователей и 1 Гость просматривают эту тему.
Цитата: moscow от 08 Апр 2010 [17:24:15]Я старую не сносил, поверх поставил и ресетнул настройки.STF работает, равы открывает...Унинстал>Инстал (как категорически рекомендуется) = всё работает на XP и Win7 32 и 64. Ничего не сбрасывал.Но вот этого жука накатал. Проверьте плиз.ЗЫ Прогнал первую попавшуюся серию с хорошо прогретой DSLR и кривыми калибровочными(в смысле температуры). Результат из Maxim_DL в подмётки не годится. См.фильмец. Единственное чего пока нет - это косметическую коррекцию не встроили, но скриптами без проблем уже чистится.
Я старую не сносил, поверх поставил и ресетнул настройки.STF работает, равы открывает...
Фильм не вижу, посему вопрос: как сравнивал? Я попробовал недавние кадры калибровать прошлогодними дарками и биасами, результат не понравился... Переделаю на всякий случай, возможно где-то ошибся.
Цитата: moscow от 08 Апр 2010 [18:13:45]Фильм не вижу, посему вопрос: как сравнивал? Я попробовал недавние кадры калибровать прошлогодними дарками и биасами, результат не понравился... Переделаю на всякий случай, возможно где-то ошибся.Фильм пришлось на картинки разложить - по размеру не влазил.Не, всё честно - у меня архиве *.cr2 полностью, вместе со всеми калибровочными хранятся.
Твои картинки понравились ОЧЕНЬ.
Естественно последнее реализовано скриптом. и его можно применять к куче лайтов через контейнер.
Николай, распиши, пожалуйста, поподробнее как это скриптом?
Обнаружил новые галочки в ImageIntegration.
два дополнительных( low и high), чего с последними делать и куда их можно применить?
2. в поясниях по примению разработчик указывает, что настройки(значения параметров) справедливы для больших количеств offset, dark, при этом offset >> dark по количеству, много - это сколько?
эти 2 файла можно в мусорку положить или вообще не генерить.... А больших видимо 10 и выше.
Обнаружил новые галочки в ImageIntegration. Похоже исполнили очередную хотелку Надеюсь будет работь так-же как в FitStaker.
Да, принцип вроде такой же, но у Ивана все ровно сильно нагляднее получается.Выбираешь SigmaClip и сразу же видишь, какие области попали, а какие нет... очень удобно.
Цитата: NKV от 08 Апр 2010 [20:38:26]Естественно последнее реализовано скриптом. и его можно применять к куче лайтов через контейнер.как будто на мандаринском наречии.
/* CosmeticCorrection v1.1 The script replase value of bad pixels on averaged value from appropriate near pixels.*/#feature-id Utilitiess > CosmeticCorrection#feature-info The script replase value of bad pixels on averaged value from appropriate near pixels#include <pjsr/Sizer.jsh>#include <pjsr/FrameStyle.jsh>#include <pjsr/TextAlign.jsh>#include <pjsr/StdButton.jsh>#include <pjsr/StdIcon.jsh>#include <pjsr/NumericControl.jsh>#include <pjsr/UndoFlag.jsh>#define VERSION 1.1#define TITLE CosmeticCorrection/** * The CosmeticCorrectionEngine object defines and implements the CosmeticCorrection * routine and its functional parameters. */function CosmeticCorrectionEngine(){ this.initialize = function() { // Default parameters this.DeadPixel = 0.000; this.HotPixel = 0.04; this.CFA =false; if ( Parameters.isViewTarget || Parameters.isGlobalTarget ) { // Our script is being executed as a Script instance. // Retrieve instance parameters this.DeadPixel = Parameters.getReal( "DeadPixel" ); this.HotPixel = Parameters.getReal( "HotPixel" ); this.MasterDark = Parameters.get( "MasterDark" ); // if ( Parameters.has( "CFA" ) ) // this.bold = Parameters.getBoolean( "CFA" ); this.CFA = Parameters.getBoolean( "CFA" ); } if ( Parameters.isViewTarget ) { // View context: use the target view. this.targetView = Parameters.targetView; } else { // Direct or global contexts: use the active view. var window = ImageWindow.activeWindow; this.targetView = window.currentView; } }; this.apply = function() { with ( this ) { // Export script parameters. We must carry out this here, *before* applying // our routine to targetView, so that a newly created Script instance will // encapsulate our current set of working parameters. exportParameters(); // Tell the core application that we are going to change this view. // Without doing this, we'd have just read-only access to the view's image. targetView.beginProcess(); // Prepare temp image var img = targetView.image; var TempWin = new ImageWindow( img.width, img.height, img.numberOfChannels, img.bitsPerSample, img.isReal, img.isColor, "Convolved"); var TempView = TempWin.mainView; with (TempView) { beginProcess( UndoFlag_NoSwapFile ); console.writeln( "Processing CFA:", this.CFA ); image.apply( img ); if (this.CFA) image.convolve([ 1,0,1,0,1, 0,0,0,0,0, 1,0,0,0,1, 0,0,0,0,0, 1,0,1,0,1 ]); else image.convolve([ 1,1,1, 1,0,1, 1,1,1 ]); endProcess(); } targetView.endProcess(); var MDWin = ImageWindow.open(this.MasterDark);// PixelMath iif ( (MasterDark > HotPixelThreshold) or(MasterDark < DeadPixelThreshold) , Convolved , targetView ) var mergeThem = new PixelMath; with (mergeThem) { expression = "iif((" + MDWin[0].mainView.id + ">" + HotPixel + ") || (" + MDWin[0].mainView.id + "<" + DeadPixel + ")," + TempView.id +","+targetView.id+")"; useSingleExpression = true; rescale = false; executeOn( this.targetView ); } TempWin.close(); MDWin[0].close(); } }; this.exportParameters = function() { with ( this ) { Parameters.set( "MasterDark", MasterDark ); Parameters.set( "DeadPixel", DeadPixel ); Parameters.set( "HotPixel", HotPixel ); Parameters.set( "CFA", CFA ); } }; this.initialize();}/* * CosmeticCorrectionDialog is a graphical user interface */function CosmeticCorrectionDialog(){ this.__base__ = Dialog; this.__base__(); this.windowTitle = #TITLE + " Script"; var emWidth = this.font.width( 'M' ); var labelWidth1 = this.font.width( "Dead pixel threshold:" );//Header this.helpLabel = new Label( this ); with ( this.helpLabel ) { frameStyle = FrameStyle_Box; margin = 4; wordWrapping = true; useRichText = true; text = "<p><b>" + #TITLE + " v" + #VERSION + "</b> — This script replase Target pixels on averag of " + "appropriate near 8 pixels, acording MasterDark file out of range pixels."; }//Dark file this.DarkFile = new Edit( this ); this.DarkFile.readOnly = true; if (Parameters.has( "MasterDark" )) this.DarkFile.text = Parameters.get( "MasterDark" ); else this.DarkFile.text = "Select MasterDark file"; this.load_Button = new ToolButton( this ); this.load_Button.icon = new Bitmap( ":/images/icons/select.png" ); this.load_Button.toolTip = "Push to select MasterDark file"; this.load_Button.onClick = function() { var loadFile = new OpenFileDialog; loadFile.caption = "Select MasterDark" loadFile.loadImageFilters(); if(loadFile.execute()) { this.dialog.DarkFile.text = loadFile.fileName; engine.MasterDark = loadFile.fileName; } }; this.DarkFile_Sizer = new HorizontalSizer; this.DarkFile_Sizer.spacing = 4; this.DarkFile_Sizer.add( this.DarkFile, 1 ); this.DarkFile_Sizer.add( this.load_Button );// DeadPixel slider this.DeadPixel = new NumericControl(this); with (this.DeadPixel) { label.text = "Dead pixel threshold:"; label.minWidth = labelWidth1; toolTip = "Define dead pixel clipping value"; setRange( 0, 1 ); slider.setRange(0,1000000 ); slider.minWidth = 200; setPrecision( 8 ); setValue (engine.DeadPixel); onValueUpdated = function( value ) engine.DeadPixel = value; }// HotPixel slider this.HotPixel = new NumericControl(this); with (this.HotPixel) { label.text = "Hot pixel threshold:"; label.minWidth = labelWidth1; toolTip = "Define hot pixel clipping value"; setRange( 0, 1 ); slider.setRange(0,1000000 ); slider.minWidth = 200; setPrecision( 8 ); setValue (engine.HotPixel); onValueUpdated = function( value ) engine.HotPixel = value; }// NewInstance button this.newInstance_Button = new ToolButton( this ); with ( this.newInstance_Button ) { icon = new Bitmap( ":/images/interface/dragObject.png" ); toolTip = "New Instance"; onMousePress = function() { this.hasFocus = true; engine.exportParameters(); this.pushed = false; this.dialog.newInstance(); }; }// CFA CheckBox this.CFA_CheckBox = new CheckBox( this ); with ( this.CFA_CheckBox ) { text = "CFA"; checked = engine.CFA toolTip = "Check if image is CFA. UnCheck if image from Monohrom imager"; onCheck = function( checked ) engine.CFA = checked; }// Standart buttons this.ok_Button = new PushButton( this ); with ( this.ok_Button ) { text = "OK"; onClick = function() { if (engine.MasterDark) this.dialog.ok(); else { var msg = new MessageBox( "You must select Master Dark file", (#TITLE + " Script"), StdIcon_Error, StdButton_Ok ); msg.execute(); } }; } this.buttons_Sizer = new HorizontalSizer; with ( this.buttons_Sizer ) { add( this.newInstance_Button ); addStretch(); add( this.CFA_CheckBox,1 ); spacing = 92; add( this.ok_Button ); } // this.sizer = new VerticalSizer; with ( this.sizer ) { margin = 6; spacing = 4; add( this.helpLabel ); add( this.DarkFile_Sizer ); add( this.DeadPixel ); add( this.HotPixel ); add( this.buttons_Sizer ); } this.adjustToContents(); this.setFixedSize();}// Global parameters.var engine = new CosmeticCorrectionEngine;CosmeticCorrectionDialog.prototype = new Dialog;function main(){ // If the script is being executed as a Script instance on a view context, // then apply it and exit, without showing any graphical user interface. // This allows us to run a script just as a regular (module-defined) process // instance. if ( Parameters.isViewTarget ) { engine.apply(); return; } console.hide(); // If the script is being executed either directly or in the global context, // then we need a target view, so an image window must be available. if ( !engine.targetView ) { var msg = new MessageBox( "There is no active image window!", (#TITLE + " Script"), StdIcon_Error, StdButton_Ok ); msg.execute(); return; } var dialog = new CosmeticCorrectionDialog(); for ( ;; ) { // Execute the CosmeticCorrection dialog. if ( !dialog.execute() ) break; // A view must be selected. if ( engine.targetView.isNull ) { var msg = new MessageBox( "You must select a view to apply this script.", (#TITLE + " Script"), StdIcon_Error, StdButton_Ok ); msg.execute(); continue; } // Perform the CosmeticCorrection routine. engine.apply(); // Quit after successful execution. break; }}main();
Обновил код. CFA Ready!
How to:1. Пользоваться контейнером, чтобы лопатить кучку процессом(ми)(где читать, куда смотреть)?2. Параметры для сложения кадров в ImageIntegration(кто, какие)?3. Почему Debyar-зизация меняет размер(см. рис.)?Упарился бороться с PixInsight, хелп?
Давай от простого к сложному?
3. Супер пиксель = 4 баер пикселя собрать в 1 RGB пиксель. Поставь Bilinear - честная интерполяция.
2. Для каких задач? Слишком обширный вопрос. Конкретизируй цель.
1. Есть 2 контейнера: один для картинок, другой для процессов.
По поводу где мануал - нету его. Ибо софт растёт на глазах. Некогда им писать мануалы, лучше пусть хотелки исполняют.
Рекомендую тупо скачать для начала все видео ролики меню: Help > Online Video Tutorials. И просто их просмотреть - появится общее представление.
Шибко не вдумывайся и не напрягайся...Самая свежая информация о всех галочках содержится в самих галочках - всплывающие подсказки. А уж если возникнут вопросы - поиск на форуме поддержки или в лоб там-же спроси - ответят через сутки исчерпывающе и 100%.