2012年4月7日土曜日

BucketMedian その2

更新。
パラメータを追加しました。

BucketMedian-0.2.0.zip
https://github.com/chikuzen/BucketMedian/

新パラメータ int "thresh"

ただのメディアンフィルタだと、radiusをちょっと高くしただけでも酷いことになるので、しきい値をもう一つ追加しました。
ソースのピクセル値と算出したメディアンの差がこの値以下の場合のみ、ピクセル値をメディアンに変更します。

これを5くらいにしておくと、なんかエッジをぼかさずにゴミがよく取れるようです。

2012年4月4日水曜日

BucketMedian

ここ一週間ほど基本的なアルゴリズムとかを勉強していたらなにか書きたくなったので、基本中の基本なメディアンフィルタを書いてみました。

BucketMedian-0.1.0.zip
https://github.com/chikuzen/BucketMedian/

メディアンを求めるのにバケツソートをちょっと応用してみましたが、あまり速くないですな。

使い方:
AVISource("herpderp.avi")
BucketMedian(clip c, int "radius", int "min", int "max")
clip:
 planar format(YV12,YV16,YV24,YV411,Y8)のみ対応。
 処理は輝度のみで、色差はまったくいじりません。

radius (1~255, デフォルト1): 参照する近傍ピクセルの半径。
 処理するピクセルを中心として、1だったら3x3、nだったら(2n+1)x(2n+1)の
近傍ピクセルのメディアンを求め、入れ替えます。
 大きくすればするほどボケて、遅くなります。

min (0~254, デフォルト0): しきい値の下限。
 これよりもピクセルの輝度が低い場合、そのピクセルはメディアンを求めず、そのままコピーします。

max (1から255, デフォルト255): しきい値の上限。
 これよりもピクセルの輝度が高い場合、そのピクセルはメディアンを求めず、そのままコピーします。

必要なもの:
 avisynth2.5.8以降
 Microsoft Visual C++ 2010 再頒布可能パッケージ

2012年3月14日水曜日

avs2pipemod その16

更新しました。
avs2pipemod-0.4.1.7z
https://github.com/chikuzen/avs2pipemod/

*'x264raw(tc)'のエラーハンドリングを修正。

たくあん氏からバグ報告いただきました。ありがとうございました。

しかしなんですな
http://k4095-takuan.blogspot.com/2012/03/batbash.html
やっぱ、batって色々と難しすぎると思うのですよ。
コマンドラインが苦手という人の理由の8割は、無理にコマンドプロンプト/batを使おうとしているからだと思います。

2012年3月4日日曜日

avs2pipemod その15

更新しました。
avs2pipemod-0.4.0.7z
https://github.com/chikuzen/avs2pipemod

* 'dumpyuv'を'dumptxt'に変更し、YUY2やRGBに対応。

やっぱ、どうせやるならpacked formatもサポートしとくべきだよなぁとか思ったので。

2012年2月18日土曜日

avs2pipemod その14

更新しました。

avs2pipemod-0.3.0.7z
https://github.com/chikuzen/avs2pipemod

*新機能 "dumpyuv" を追加

これを読んでたら自分も欲しくなったので、機能を追加しました。
RGBデータを扱いたい場合は
ColorBars()
Y=ShowGreen("Y8").ConvertToYV24()
U=ShowBlue("Y8")
V=ShowRed("Y8")
YToUV(U, V, Y)
とでもして下さい。

2012年2月16日木曜日

avs2pipemod その13

更新しました。

avs2pipemod-0.2.2.7z
https://github.com/chikuzen/avs2pipemod

*x264raw/x264bdの出力内容に"--frames"を追加

rawvideo出力等で"-trim=*,*"を使っている場合は、こちらも同様にtrimを追加して下さい。
両方で同じ指定をしないと、フレーム数の整合がとれなくなります。

2012年2月5日日曜日

Pythonで関数の引数の順序を入れ替える

メモ替わり

L-SMASHのコードで使われている関数のいくつかについて、引数の順序を入れ替える必要が発生した。

こういった作業はIDEを使っていれば簡単にできるのかも知れないが、何かしら書くときはいつもテキストエディタを使い、コンパイルはCLI操作で済ませているので、使い方がいまだにさっぱり分からない。
かといっていちいち関数名で検索しては手作業で修正するのも面倒なので、久々にPythonを書いた。


制限事項:
一つの関数の記述が複数行にまたがる場合
int var = ItIsNoNeedToCareAboutTheLengthOfFunctionNamesBecauseEverybodyUsesIDE(foo,
                                                                               bar,
                                                                               fizz,
                                                                               buzz,
                                                                               bleh,
                                                                               fuck);
は処理できないので、warningを頼りに手動で修正すること。