うえぽんSW局

古いタイプの日記ブログです。気まぐれに更新してます。

カテゴリ: AviUtl関連

 「自動24fpsの2-3プルダウン解除を補助」をver0.2に更新しました。

 いつものところに置いてあります。
 AviUtl プラグイン フィルタ by うえぽん

 更新内容はこうなってます。
 ・テロップ(文字)の細い横線をコーミングノイズとして削ることがあったので、それを軽減させようと努力した。しかしまだまだ完璧ではない。
 ・画面右端にゴミが出るバグ修正。
 ・解除漏れの縞フレーム強制解除をon/offできるようにした(旧バージョンではデフォルトonにしていた)。
 ・内部的に色々と調整。

 テロップの細い横線というのはこういうのです。

 改善点_比較画像

 コーミングノイズとして削ってしまうことがあったのを、なんとか以前よりも改善させました。
 しかし、まだまだ完璧ではありません……。
このエントリーをはてなブックマークに追加

 久しぶりにAviUtlのプラグインフィルタを作ったので公開します。
 「自動24fpsの2-3プルダウン解除を補助」という名前です。

 いつものところに置いてあります。
 AviUtl プラグイン フィルタ by うえぽん

 名前の通りAviUtl標準フィルタの自動24fpsを補助するフィルタなので、自動24fpsと一緒に使ってください。
 使用の際には自動24fps側の「横縞部分を二重化」のチェックを外しておく必要があります。
設定注意

 こういうノイズが…
サンプル_ビフォー

 こうなります。
サンプル_アフター


 当フィルタがやっていることを簡単に解説するとこんな感じです。
解説画像

 以下、説明が面倒なので簡単に箇条書き。
 ・SSE2やAVXやAVX2への対応はコンパイラの自動ベクトル化に任せた。組み込み関数を使っても3種類のSIMDのコードを書くのは大変。コンパイラが吐くアセンブラコードを見ながらC言語で書いた。コンパイラはgcc 8.1.0を使用。

 ・片フィールド補間ではなくノイズ除去をやっている。ノイズ除去には縦三点のメディアンフィルタを用いている。しかしメディアンフィルタだけだと削りすぎてしまうことがあるので簡易3DNRで削り過ぎを抑制している。前後が類似のフレームでないと簡易3DNRは効かない。

 ・正確なシーンチェンジ検出はしていない。平均輝度や偏差が大きく変化した時に処理するようにしている。シーンチェンジ以外でもノイズが乗っていることがあるためこれでも構わない。

 ・自動24fpsが解除漏れすることがある。その場合は当フィルタ側でも縞判定して縞解除している。縞判定方法は縦3点メディアンフィルタを通して大きく変化したら縞があると判定する強引なもの。

 ・どうやら自動フィールドシフト(高速化版)にも同じようにノイズを除去する設定があるらしい(解除レベル4?)。その場合は片フィールド補間になるようだが見た目の違いはよく分からない。自動フィールドシフト(高速化版)では消えないノイズもこのプラグインなら除去できることがある。が、逆の場合もある。詳しくは検証してない。

 ・速度は自動フィールドシフト(高速化版)の方が速い。

 ・おそらく自動24fpsの代わりに自動フィールドシフト(高速化版)を使うこともできる。その時は解除レベル0にすれば良いらしい。

 ・このプラグインでインターレース解除も同時にやればもっと速度が上がると思うが、インターレース解除のやり方がよく分からないので自動24fpsに丸投げすることにした。

 ・効果を確かめるなら画質の悪いTOKYO MXが一番わかりやすい。
このエントリーをはてなブックマークに追加

 今期の大河ドラマの「麒麟がくる」、画面が明るいだとか、彩度が高すぎるなどと言われていたので、AviUtlでヒストグラムを見てみた。

麒麟がくる_白飛び

 一番上の段が輝度で、右側の薄い線をはみ出してる。やっぱり白飛びしていた。
 左側の薄い線は黒色だが、こちら側は収まているので黒潰れはしていない。

 二段目と三段目は色差で、分布が広い気もする。これだと彩度が高く感じられるかもしれない。

 どうやら4K放送では明るさや彩度は気にならないそうなので、たぶん4Kの色空間から2Kの色空間へ変換するのに失敗してるのではないかなと思ったりする。
このエントリーをはてなブックマークに追加

 AviUtlの拡張編集に「簡易変形」(アニメーション編集にサンプルとして入っているスクリプト)というものがありますが、それに簡易的なパース(遠近)をつけたスクリプトを作ってみました。カメラ制御を使わずに4点を指定しただけでパースがつきます。使用法も簡易です。


 スクリプトのダウンロード(homography_20181104.zip)



 左が従来の「簡易変形」、右が今回作成した「簡易パース変形」です。
簡易パース変形1


 作例です。テレビ画面などに動画をはめ込むのに使えると思います。
簡易パース変形2

 同様のことを「簡易変形」でやってみた場合です。(このぐらいのパースだとあまり違いは感じないかもしれません……)
簡易パース変形3

 設定の「AA方法(0~2)」ですが、
 0はアンチエイリアス無し
 1は全ての分割区画でアンチエイリアス
 2は外側の分割区画のみでアンチエイリアス
 となっています。
 1だと繋ぎ目でゴミが出ることがあるので、普段は2を使うと良いと思います。それでもゴミが出る場合は0にしてください。

 「分割数」はテクスチャーの一辺をその数で分割します。一辺なので分割数はその二乗になります。8なら8*8の64個に分割されます。理論的には分割数を多くすればより正確なパースになるはずですが、実際に使ってみると見た目はあまり変わらないので、8で十分かもしれません。

 「三角ポリゴン」は分割した四角形を三角ポリゴン2つで構成させます。チェックしなければ四角形のポリゴンになります。元にした「簡易変形」の描画法にあったので設定を設けてみましたが、あまり見た目は変わらないかもしれません。

 「市松模様化」は確認用です。どのように分割されているか市松模様(白黒のチェック柄)で確認できます。


●「簡易平面射影変換」
 一緒に「簡易平面射影変換」というスクリプトも同梱しています。これは「簡易パース変形」とは逆のことをします。

 まずこのように4点を指定します。
簡易平面射影変換1

 “射影変換”をチェックするとこのように正面を向かすことができます。
簡易平面射影変換2

 射影変換(ホモグラフィ)は元々こういうことをするものらしいです。
 アスペクト比を自動設定することができないので手動で「変換後w」と「変換後h」を設定してください。


●参考にしたサイト
 下記のサイトを参考にさせていただきました。大変に参考になりました。ありがとうございます。
 ・mieki256's diary - DXRuby上で射影変換ができた
 ・デジタル・デザイン・ラボラトリーな日々さんの「射影変換(ホモグラフィ)について理解してみる」のシリーズ
このエントリーをはてなブックマークに追加

 当ブログのサイドバー(注:スマートフォンでは表示されません)にある送信フォームから寄せられたメッセージに対する返事です。メールアドレスが記載されていなかったのでブログ記事での返事になります。

 拙作Aviutlプラグイン「色褪せ軽減β」および「UVダウンサンプリング」をAvisynth用のdllにコンパイルして欲しいとのことですが、申し訳ありません。このリクエストにお応えするのは無理かもしれません
 AviUtlとavisynthは仕様が異なるため、単純にコンパイルするだけで済むことではありません。新しくavisynthのプラグインを作成することになってしまいます。(私はavisynthのプラグインを作成したことがないため、新たにとなると一苦労になりそうなので避けたいので……)

 そもそもこのプラグインはAviUtlのRGB→YUY2の変換における欠点(右の色差が捨てられてしまう)を補うことを目的に作成したプラグインです。avisynthにはそのような欠点はないため、そもそも不要なプラグインだと思います。

 もしもおまけ機能の色差の鮮鋭化を目当てに使っているのであれば、avisynthのスクリプトでも似たようなことはできるかと思います。
 ここを参考にして色差チャンネルをのみを鮮鋭化(シャープネス)すればなんとかなるかもしれません。
 http://www.avisynth.info/?Merge


[追記:2018/07/03]
 上を書いたときはavisynthのスクリプトでUVダウンサンプリングフィルタの鮮鋭化(シャープネス)を再現できるかと思いましたが、試してみたところ、少し特殊なことをやっていたので再現は難しいかもしれないと気付きました。(少し特殊なこととは、元の値が+のときは+方向へのみ強調、元が-のときは-方向へのみ強調する、ということをやっている)
 とりあえずUVダウンサンプリングのメイン部分をavisynthのスクリプトで再現してみました。他の部分もavisynthの既存フィルタで再現できると手間が省けるのですが……。

function UVdownsamplingToYV12(clip c, int "taps"){
    taps = default(taps, 4)
    w = c.width()
    h = c.height()
    mat = h >= 720 ? "Rec709" : "Rec601"
    c = (c.IsRGB24() || c.IsRGB32()) ? c.ConvertToYV24(matrix = mat) : c
    u = c.UToY8().BlackmanResize(w/2, h/2, taps=taps)
    v = c.VToY8().BlackmanResize(w/2, h/2, taps=taps)
    return YToUV(u, v, c)
}


[追記:2018/07/04]
 メッセージを送られた方がここを見ているか分かりませんが、「色褪せ軽減β」に類似したavisynthのフィルタを見つけたので紹介します。ChromaOptimizeというフィルタです。

 ダウンロード先(現在の最新版はv0.2.0 (alpha) らしい)
 https://forum.doom9.org/showthread.php?t=136324#post1120914
 簡単な日本語解説
 http://www.avisynth.info/?ChromaOptimize

 サポートされるフォーマットはYV12(YUV420)のみなので、YV24(YUV444)相当で使いたい場合は、輝度プレーンを2倍に拡大したものをダミーで用意するなど工夫が必要かもしれません。
このエントリーをはてなブックマークに追加

 AviUtlのフィルタプラグイン「60fpsフリッカ軽減」をver 0.2.2に更新しました。
 前段のフィルタ(例えばリサイズやクリッピングなど)で画面サイズを変更していると、当フィルタが画面サイズを元に戻してしまうバグの修正です。

 いつものところに置いてあります。
 AviUtl プラグイン フィルタ by うえぽん


 余談。
 久しぶりに上のページを更新しました。久しぶりなので今回の更新で何か失敗してないかと少し不安だったりします。
このエントリーをはてなブックマークに追加

 「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をデフォルト設定にするのは見送りました。

 ちなみに、赤色だけでなく青色も劣化するのですが、それを気にする人は少ないようです。
このエントリーをはてなブックマークに追加

 「JPEG 3点セット」をver 0.3.0に更新しました。いつものこちらにアップしてあります。

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

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

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

 「虫眼鏡プラグイン」をr8に更新しました。

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

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

 このたび寄せられた要望では、オーディオ波形部分をクリックしたとき座標を取得しないようにできないかとのことでしたが、オーディオ波形部分をクリックしたことをプラグイン側で知る方法がないようなので、今回のような形での対応になりました。
このエントリーをはてなブックマークに追加

 更新しました。久々の更新なのでいっそのことver1.0.0ということにしました。

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


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


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

 まず元画像。
 UVダウンサンプリング サンプル1UVダウンサンプリング サンプル2

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

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


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

 左から元画像、通常のUVダウンサンプリング、cutoffを4にしたUVダウンサンプリングです。

 UVダウンサンプリング_比較画像

 ジャギは目立たなくなりますが、ボケるのであまり綺麗な画質とはいえません。
このエントリーをはてなブックマークに追加

↑このページのトップヘ