maskDoom9のほうで「GenericFiltersにmt_hysteresisの同等品を追加してくれないか?あれはhandyでいいものだよ」というリクエストがありました。mt_histeresisねぇ...そりゃ、あんたにとってはhandyかもしれんが、書く方の身にもなれよ。あれはIIRフィルタだからSIMD化も出来ないし、遅いものしか書けないんじゃないかなぁ。だいたいあれってgenericなfilterじゃないだろ、specificなfilterじゃねえか。ことをブツブツ言いながらもとりあえず書いてみることにしたわけです。ちなみにmt_hysteresisは、二値化する際の閾値を変えた二つのエッジマスクからノイズの少ない一つのエッジマスクを作り出すフィルタです。アルゴリズムやロジックを理解するため、avisynthで同等のものが書けるかどうかを試してみます。vapoursynthプラグインは9/10/16bit対応とか可変解像度/フォーマットとかのことも考えないといけないので、avisynthよりも面倒なのです。overflowを起こすし、かといってSTLの使い方もよくわからんので自分でスタックを実装するはめになりました(Masktools2はSTLのlistとpairを使っている)。結果として解像度に縦横ともに65535までの制限ができたりメモリの使用量が多くなったり(1920x1080で約8MB)しましたが、まあそこらへんは現時点ではそれほど問題ではないと目をつぶることにします。このプラグイン、出力はmt_hysteresisと変わらないわけですが最大の問題はスピードです。48.525fpsまさかのダブルスコアです。原因がMSVC++のSTL実装が糞すぎるのか(Masktools2の配布バイナリはVC++10で筆者と同じ)、それともこんなクリティカルな処理にSTLを使うのが間違いなのかはわかりませんが、C++大好き人間は御託を並べる前にもう少し基本に立ち返るべきなのではなかろーかとか思いました。世はC++11サイコーとか騒がしいですが、肝腎な部分でラクなものに走れば大事なものを失うことになりかねません。Masktools2遅すぎるだろ。次はvapoursynth版書かなきゃならんのか...。追記:TurboPascal7氏よりmt_hysteresisが遅い件について指摘を受けました。彼曰く、「あれはmanaoがlistを使ってるから遅いんだよ、vector使えば2、3倍速くなるのは確認済みだよ」なるほど、vectorですか。俺もmallocで一度に最大分確保するのやめてrealloc使うことにしよ。