*プログラムの2次配布はご遠慮ください。
*バグ等ありましたら、お知らせください。
*プログラムの2次配布はご遠慮ください。
*バグ等ありましたら、お知らせください。
ホットピクセルとデッドピクセルを消去するMaxImDL用のプラグインフィルターです。このフィルターは、純粋なホット&デッドピクセルだけでなく、連接したノイズのかたまりも消去することが出来ます。ホット&デッドピクセルだけでなく、宇宙線ノイズもある程度消すことが出来るかもしれません。
(注)このプラグインは白黒画像専用です。
<アルゴリズム>
通常のホット&デッドピクセル除去のアルゴリズムは、処理対象のピクセル(ターゲットピクセル:TP)の値に対し、それを囲む8つのピクセル全てが指定した閾値以上の輝度差を持っている場合に動作します。つまり、下図(A)のように、周辺8個のピクセルを見て判断することになります。
HotDeadでは、この「8」という数値を変更することが出来ます。たとえばこれを「7」とすると、上図(B)のように「条件のあった7個のピクセルがあれば、その7個の平均値を使って補正を行う」というように動きます(この例で言うと右下のピクセル値は補正値としては使用しません)。これによって、くっついて存在するホット(orデッド)ピクセルを消去することが出来ます。
<サンプル>
以下、各パラメーターによって、どのような効果が出るかの実例を示します。ダーク演算のみをした画像に対して、サンプルピクセル数を8、7,6と減らしていくと、塊になっているホットピクセルがなくなるのがわかります。ただ、この数を減らすと本来ノイズでないピクセルまで変更してしまう可能性があります。閾値も同様で、これらの値は、使用する画像によって最適な値を探す必要があります。ちなみに、私の場合は、ホット、デット共に閾値20%、ラウンド数7で使っています。
オリジナル画像を4倍サイズにしたものです。
この画像が通常のHot&Deadフィルターと同等になります。
連続しているホットピクセルもほぼ消えています。まだ右の輝星にひとつ残っていますが、私はこの程度消せればOKとしています。後は、ディザで撮影して、フレーム合成時に演算処理(メディアン、シグマクリップ等)で軽減させています。やり過ぎると画像の変化が大きくなりすぎます。
全て消えてすっきりしていますが、もとの画像と比べると微妙に画像が変化しています。...が、これでも良いかもしれません。精神的な問題程度です。
<使い方>
MaxImDLのプラグインフィルターです。画像に対してPlug-Inメニューから操作してください。
このようなダイアログが開きます。各パラメータの意味は以下の通りです。
HotS(%)、DeadS(%) 【閾値】:
ターゲットピクセルに対しここで示された%より大きな差があるとラウンド数のカウントを行います。
HotNum(1~8)、DeadNum(1~8)【ラウンド数】:
この数以上の条件にあったピクセルが周囲にあった場合、その平均値でターゲットピクセルを補正します。
✴各パラメータにセットした値は保持され、次にダイアログを開いた時も同じ値が入ります。
✴外部スクリプトからも操作出来ます。サンプルスクリプトを参照してください。
<スクリプト対応>
外部スクリプトからCOMを通して、以下のようにアクセス出来ます。
オブジェクト名:HotDead.PlugIn
メソッド:DoProcessing [MaxDoc] [HotNum] [HotS] [DeadNum] [DeadS]
MaxDoc:MaxInDLのドキュメントオブジェクト
HotNum:ホットピクセルラウンド数(ダイアログと同等の値)
HotS:ホットピクセル閾値(ダイアログと同等の値)
DeadNum:デッドピクセルラウンド数(ダイアログと同等の値)
DeadS:デッドピクセル閾値(ダイアログと同等の値)
スクリプト例>
Set MyHotDead = CreateObject("HotDead.PlugIn")
MyHotDead.DoProcessing MaxDoc,7 ,20, 7 ,20
Wscript.Echo " HotDead plugin(7,20) done."
✴添付ファイルに実際のスクリプト(vbs)があります。こちらも参考にしてください。
© Hiromitsu Kohsaka All Right Reserved.