掲示板お問い合わせランダムジャンプ

トップスペース
 

2014年12月30日
【AviUtl】「JPEG 3点セット」ver 0.3.1に更新。圧縮品質の初期設定値を75から90にしました
 「JPEG 3点セット」をver 0.3.1に更新しました。いつものこちらにアップしてあります。

 AviUtl プラグイン フィルタ by うえぽん

 前回の更新(ver 0.3.0)からまだ1ヶ月経っていませんが、今回の更新では中身はあまり変わってません。デフォルト値(初期設定値)を変更しただけです。
 今までは圧縮品質の初期値が75でしたが、それを90に引き上げました。これは時代の変化を考えてのもので、昔ほどファイルサイズに対する制限が厳しくないため、90に引き上げても問題ないとしました。
 あと、設定をいじらずに初期設定のまま使う人がいるようなので、その配慮でもあります(「JPEGワンクリック保存は画質が悪い」と思われていたようです)。


■赤色劣化が気になるときはダウンサンプリングを4:4:4
 これについては何度も書いていますが、今回も書きます。
 赤色の劣化が気になるときは、ダウンサンプリングの設定を4:4:4にすると解決する場合があります。

 まずオリジナル画像です。PNG形式です。
 kadomatsu(PNG)

 これを圧縮品質90のJPEGにしたものがこれです。
 JPEG420_090

 上の画像では赤色で「かどまつ」と書かれた文字の輪郭が劣化しています。この劣化は圧縮品質を100にしても軽減しません。

 下は圧縮品質を100にしたものです。
 JPEG420_100

 あまり変わってません。
 ではダウンサンプリングを4:4:4にしたらどうでしょうか。

 下は圧縮品質を90で、ダウンサンプリングを4:4:4にしたものです。
 JPEG444_090

 「かどまつ」の輪郭の劣化が軽減していることが分かります。

 最初から4:4:4にしておけば良いじゃないかと思いますが、4:4:4にするとファイルサイズが大きくなってしまいます。必要とする場面も少ないため、4:4:4をデフォルト設定にするのは見送りました。

 ちなみに、赤色だけでなく青色も劣化するのですが、それを気にする人は少ないようです。
[ 投稿者:うえぽん at 22:13 | AviUtlや画像処理 | コメント(0) ]

2014年12月13日
【AviUtl】「JPEG 3点セット」ver 0.3.0
 「JPEG 3点セット」をver 0.3.0に更新しました。いつものこちらにアップしてあります。

 AviUtl プラグイン フィルタ by うえぽん

 今回の更新では、JPEGのライブラリを静的リンクにしました。別の言い方をすると、libjpeg-62.dllをバイナリに含めたということです。これによりファイルサイズが大きくなってます。
 libjpeg-62.dllは不要になるので削除して構いません。

 「JPEGワンクリック保存」が一部の環境では認識されないという報告を受けておりますが、原因はよく分かりません。
 今回はとりあえず静的リンクに変更することで様子をみたいと思います。


【プラグイン置き場のRSSが読まれない】
 以前、プラグイン置き場にRSSを設置したと書きましたが、どうやら一部のRSSリーダー(feedlyなど)でRSSを読んでくれないようです。
 たぶん、画像やzipなどを直リンできなくする仕組みが働いて、RSSリーダ側のクローラーを弾いているのではないかと思います。
 この辺も考えておきたいと思います。
[ 投稿者:うえぽん at 19:09 | AviUtlや画像処理 | コメント(0) ]

2014年09月18日
【AviUtl】「虫眼鏡プラグイン」r8
 「虫眼鏡プラグイン」をr8に更新しました。

 AviUtl プラグイン フィルタ by うえぽん

 メインウインドウをクリック(正確にはマウスダウン)したときの動作に手を加えました。
 今まではメインウインドウのどこをクリックしても座標を取得していましたが、今回の更新では、動画内をクリックしたときだけ座標を取得するようにしました。
 ちなみにオーディオ波形部分をクリックしたときについては、オーディオ波形の下に動画が隠れているのなら座標が取得されます。

 このたび寄せられた要望では、オーディオ波形部分をクリックしたとき座標を取得しないようにできないかとのことでしたが、オーディオ波形部分をクリックしたことをプラグイン側で知る方法がないようなので、今回のような形での対応になりました。
[ 投稿者:うえぽん at 21:57 | AviUtlや画像処理 | コメント(0) ]

2012年12月09日
【AviUtl】「UVダウンサンプリング」フィルタをver1.0.0に更新
 更新しました。久々の更新なのでいっそのことver1.0.0ということにしました。

 AviUtl プラグイン フィルタ by うえぽん


 主な更新内容は
 ・事前に鮮鋭化(シャープ化)することで色褪せを軽減できるようにした
 ・Lanczos以外にBlackmanSincも使えるようにした
 ・ボカすことでFlashPlayerにおけるジャギ軽減ができないかと試してみた
 の3点です。


●鮮鋭化
 事前にアンシャープマスク(シャープ化する)のようなものをかけ、色が褪せやすい部分を強調することで、色褪せ軽減します。

 まず元画像。
 サンプル1サンプル2

 従来のUVダウンサンプリング。
 従来1今回2
 元画像と比べると色が褪せてます。

 今回ののUVダウンサンプリングで、CbおよびCrの鮮鋭を16。
 今回1今回2
 色褪せが軽減できているかと思います。


●cutoff
 Flash Playerでは色差の補間処理をやっていないとのことで、そのせいでジャギが目立つらしいです。
 そこでボカすことでジャギの軽減を試みるようにしてみました。
 cutoffが2だと1/2相当の縮小と同じボケ、3だと1/3相当、4だと1/4相当となっています。

 左から元画像、通常のUVダウンサンプリング、cutoffを4にしたUVダウンサンプリングです。
 比較画像
 ジャギは目立たなくなりますが、ボケるのであまり綺麗な画質とはいえません。


【閑話】
 lame v3.99の次のバージョンはlame v3.100らしい。
 繰り上がってv4.0になるのかと思った。
[ 投稿者:うえぽん at 15:11 | AviUtlや画像処理 | コメント(0) ]

2012年07月14日
【AviUtl】「虫眼鏡プラグイン」r7
 「虫眼鏡プラグイン」をr7に更新しました。

 AviUtl プラグイン フィルタ by うえぽん

■ルーラー&グリッド線
 要望がありましたので、下のスクリーンショットのようにルーラーとグリッド線を表示できるようにしました。
 虫眼鏡r7

■ドラッグ中はマウスカーソルが変わる
 地味ですが、ドラッグ中はマウスカーソルの表示が変わるようにしました。

■マウスホイールの向きを反転する
 r6で隠し機能として付けていた機能ですが、メニューで設定できるようにしました。
 マウスホイールによる拡大・縮小は、ソフトによって向きがマチマチだったりします。人によって好みが別れると思うので、設定できるようにしています。
 (ビデオゲームでもLRボタンの設定ができると嬉しい)

■メニューバーは消せる
 このバージョンからメニューバーを付けましたが、いらない場合は消せます。
 aviutl.iniの[虫眼鏡]の項目に、menu=0という行を加えて下さい。
[ 投稿者:うえぽん at 16:06 | AviUtlや画像処理 | コメント(1) ]

2012年02月25日
【AviUtl】「JPEG 3点セット」を ver 0.2.0 に更新
 「JPEG 3点セット」を ver 0.2.0 に更新しました。

 AviUtl プラグイン フィルタ by うえぽん

 バージョンを0.1.6にするか0.2.0にするか迷いましたが、AviUtl本体が0.99k2で「YC48も色変換する」という大きな変化があったので、それを考慮しているということで0.2.0にしました。

●「JPEGワンクリック保存」を複製したとき設定が別個になるようにした
 ショートカットキーごとに設定を別けたいという要望がありましたので、jpeg_print.aufを別名で複製したとき、設定が共有されない(設定が別個になる)ようにしました。
 具体的には、aviutl.iniが[フィルタ名]で設定を管理しているので、[フィルタ名(ファイル名)]になるようにしました。

●恥ずかしい誤字修正ついでに表記変更
 「JPEGワンクリック保存」の設定一番下の表記を下のようにしました。
 JPEG1クリック設定
 AviUtl本体が0.99k2で「YC48も色変換する」となりましたが、「JPEGワンクリック保存」はYC48で処理しているものの、本体の色変換をスルーします(以前と全く変わらない動作です)。
 その辺が分かりやすそうな表記にしてみました。

●「JPEG File Reader」と「連番JPEG出力」は0.99k2の影響を受ける
 こういうのは早く書くべきでしたが、「JPEG File Reader」と「連番JPEG出力」はYC48で入出力しているために、AviUtlの0.99k2以降では本体側で色変換されてしまいます。
 JPEGはBT.601なので、「JPEG File Reader」「連番JPEG出力」で入出力する際は、色変換を「BT.601」に設定してください。
 動画と同じ扱いです。


【DCTよもやま話】
 DCTは波の組み合わせで様々な波形を表現できるらしいですが、どうして波で矩形を表現できるのか不思議です。
 試しにグラフにしてみたら、こうなりました。
 DCT矩形
 離散データなので、点だけを繋げればちゃんと矩形になります。
 このバランスが崩れるとモスキートノイズが出るのが何となく分かります。
[ 投稿者:うえぽん at 13:38 | AviUtlや画像処理 | コメント(14) ]

2012年02月18日
【AviUtl】「60fpsフリッカ軽減」を0.2.1に更新
 「60fpsフリッカ軽減」の0.2.0が一部のウイルス対策ソフトで誤検出されるらしいので、0.2.1に更新してみました。

 AviUtl プラグイン フィルタ by うえぽん

 この更新で機能や性能はあまり変わって無いと思います。
 「簡易NR」のデフォルト値を0から18にしたぐらいです。

 なぜ誤検出されたのかはよく分かりません。
 使っているコンパイラーは http://komisar.gin.by/ のMingwで、バージョンgcc-4.6.2です。
 とりあえずプログラムの無駄を削ったり、コンパイルオプションを変更したりして、バイナリを別物にしすることで対応してみました。
[ 投稿者:うえぽん at 15:36 | AviUtlや画像処理 | コメント(17) ]

2012年01月24日
「補間なし平均」をver0.3.0に更新 & 色変換の覚え書き
 色変換プラグインの「補間なし平均」をver0.3.0に更新しました。
 いつもの置き場所にあります。

 AviUtl プラグイン フィルタ by うえぽん

 更新内容は
 ・AviUtlのver0.99k2でYC48の色変換もするようになったので、それにならってYC48に対応
 ・メモリ律速するようなのでスレッド数を半分にして並行する他の処理へリソースを回すようにした
 の2点です。

 AviUtl内部と入出力の色空間が、異なるなら変換、同じなら無変換、という感じになってます。


 以下は覚え書き。

【bt.601とbt.709の相互変換の覚え書き】
(Y0, U0, V0)を別規格の(Y1, U1, V1)へ変換する式

(a, b, c): 変換元、RGBから輝度Yを求める際の各係数 ※a+b+c=1.0
(p, q, r): 変換先。RGBから輝度Yを求める際の各係数 ※p+q+r=1.0
とすると

Y1 = Y0 +        (r-q*c/b)*(1.0-c)*2.0 * U0 +         (p-q*a/b)*(1.0-a)*2.0 * V0
U1 = (1.0-r+q*c/b)*(1.0-c)/(1.0-r) * U0 + (-p+q*a/b)*(1.0-a)/(1.0-r) * V0
V1 = (-r+q*c/b)*(1.0-c)/(1.0-p) * U0 + (1.0-p+q*a/b)*(1.0-a)/(1.0-p) * V0

例えば、変換元がBT.709で変換先がBT.601なら
(a, b, c) = (0.2126, 0.7152, 0.0722)
(p, q, r) = (0.29891, 0.58661, 0.11448)
を代入する

 で、YC48の色変換をMMXやSSE2の整数演算で行えるようにしたら次のようになりました。
●BT.709→BT.601
yy = Y + ((-15640*U - 27905*V + 65536) >> 17);
uu = U + (( 2456*U + 15038*V + 65536) >> 17);
vv = V + (( 9931*U + 3352*V + 65536) >> 17);

●BT.601→BT.709
yy = Y + ((13441*U + 25705*V + 65536) >> 17);
uu = U + ((-1331*U - 14514*V + 65536) >> 17);
vv = V + ((-9585*U - 2196*V + 65536) >> 17);

 BT.709 → BT.601 → BT.709という計算をYC48の値の範囲(約12bit)で総当りで調べたところ、最大誤差が±1、誤差の割合が約11.624%でした。
 誤差±1ということは幅は3なので、約12bit→10bitという丸めによって幅は1/4になり、理論上は10bit精度時の誤差は±0になるはずです(※入出力プラグインが行う変換との相性次第)。

 もっと精度にこだわるなら、内部と入出力の色空間を揃えれて無変換にしてください。
[ 投稿者:うえぽん at 21:54 | AviUtlや画像処理 | コメント(5) ]

2011年12月03日
【AviUtl】「60fpsフリッカ軽減」を0.2.0に更新
 「60fpsフリッカ軽減」を0.2.0に更新しました。

 AviUtl プラグイン フィルタ by うえぽん

 主な更新内容は
 ・簡易NRを付加
 ・フレームのキャッシュ方法を改善して速度アップ
 の2つです。

●簡易NR
 略さないと「簡易ノイズリダクション(時間軸)」です。
 メインのフリッカ軽減の処理速度をこれ以上上げるのは難しそうなので、他のフィルタ機能を付加することでトータルの処理時間を短くすることを考えてみました。
 フリッカ軽減でアダマール変換をしているので、そのついでに閾値処理をやっています。
 AviUtl標準の「ノイズ除去(時間軸)」と似たような効果があると思います。

●時間軸プラグインを作る際のメモ
 時間軸フィルタでは前後のフレームを参照するわけですが、フレーム参照のたびに同じフィルタリング処理をやるのは無駄です。なのでAviUtlではキャッシュすることでその無駄を減らすことが出来ます。
 で、set_ycp_filtering_cache_size()でキャッシュフレーム数を設定しget_ycp_filtering_cache_ex()で前後のフレームを取得するわけですが、このとき前後のフレームだけでなく現在のフレーム分もキャッシュすることを忘れないように注意。現在のフレームが次のフレームでは前のフレームということになるので、キャッシュされていないと再びフィルタリング処理すことになってしまいます。
 それとフィルタフラグにFILTER_FLAG_NO_INIT_DATAを指定するとfunc_proc()の初期画像データを作成しないようになるので、これを指定しておいて、現在のフレームもget_ycp_filtering_cache_ex()で取得すると良いかもしれないです。
[ 投稿者:うえぽん at 20:26 | AviUtlや画像処理 | コメント(2) ]