2006/12/30(土)スキャナ買い換え

2006/12/30 4:20 PC(全般)
フラットベッドスキャナが遅いので何とかしたい。現在使っているスキャナはGT-8700。あ、用途は紙原稿ね。

USB1.1世代のスキャナだし、最近のはきっと速いはず。入れ替えを考えた。
http://bbs.kakaku.com/bbs/00401010142/SortID=4590740/
http://bbs.kakaku.com/bbs/00400510146/SortID=5202764/
http://bbs.kakaku.com/bbs/00401010144/SortID=4676628/

これら書き込み等を参考にあちこち調べていたが、結論として最新機種だからといって速くなるわけではない。
常用する解像度によるようだけど、300dpiくらいまでだったら、Canon 8400Fあたり、EPSON GT-8300UF/9700F辺りの世代が一番早いようだ。300dpi以下では、モアレ除去を切ってもGT-Xxxx系のスキャン速度は8300UFに及ばないような気配である。

ただここら辺はカタログスペックからだとホント分からない。なぜならline/sが書かれている解像度がそれぞれ機種で違うから。そしてヘッドが戻る時間や、キャノン機種にある「調光中」で30秒近く停止する問題など実際に使ってみないと分からないことが多い。挙げ句最近はフィルムスキャナ推しなので、紙原稿は取り込み時間を具体的に書かない上に比較記事もない。海外の記事が参考になるかと思ったらラインナップが全然違ってやんの。機種名からして違うのは何か制限がかかってるのだろうか……

さて、結局オークションでGT-8300UFを入手した。型番上は下がっているが、300dpiまでなら爆速だと評判のスキャナである。廉価機種なので安いものの、電源ボタンがなかったりもする。Epson Scanが対応していないのでモアレ除去機能もこの機種にはない(とはいえ所詮ソフトウェア処理だからレジストリいじってやればいけるんじゃ???)。

閑話休題。で、GT-8700と比較計測。

測定時間は原稿台全面を対象に、「ボタン押してからスキャナから音がしなくなるまで」。全てオーバーヘッド分の時間も含んだ時間を書いている。計測は所詮ストップウォッチなので、精神的バイアスも含めた測定誤差あり。

原稿種:原稿台

フルカラー・ドライバ色補正無し・アンシャープマスク無し。
※なお、ヘッドの戻りはEPSONでは「キャリッジリターン」とも呼称。

[ GT-8700(USB1.1) ]
・preview: 12sec
・イメージタイプ:カラー写真
150dpi: 21sec
300dpi: 35sec
600dpi: 125sec

・イメージタイプ:白黒写真
150dpi: 19sec
300dpi: 28sec
600dpi: 64sec

・オーバーヘッド:
ヘッド動きだしまで:3sec
ヘッド戻り:4sec(取り込みは終了している))

[ GT-8300UF(USB2.0) ]
・preview: 8sec
・イメージタイプ:カラー写真
150dpi: 12sec
300dpi: 15sec
600dpi: 42sec

・イメージタイプ:白黒写真
150dpi: 12sec
300dpi: 14sec
400dpi(おまけ): 16sec
600dpi: 39sec

・オーバーヘッド:
ヘッド動きだしまで:2.5sec
ヘッド戻り:2sec(取り込みは終了している))

だいたい倍という所。感覚的にはヘッドが戻っている間に操作ができるのでもっと早くなった印象。確かに8300UFは速い。もちろんGT-8700は多分SCSIで繋いだ方が早いので若干損はしているだろうけど。スキャナメーカーはもう速度競争をしていないので、この辺りの世代で2倍はなかなか嬉しい。

ほかに速い機種は…… 書き込みを見る限りは、canoscan 8400Fのほうが速かったかもね。300dpiまではほぼ互角かというところだろう。ただCANONには「調光中」問題がある。どの機種でどの頻度発生するのか分からないので、どうもキャノンを敬遠したくなる。

600dpi以上を使うなら別の上位機種の方が早そう。8400Fはもちろん、600dpiだとEPSONでもGT-9400UFのほうがカタログスペックでは速い(600dpiはカタログ上表記されていることが多い)。

まとめ。速度を求めるなら、4k未満で手に入る機種なのでGT-8300UFのコストパフォーマンスは高いと思う。突き詰めたわけではないのでもっと早い機種はあるかもしれないけど、300dpi以下ではこれより格段に速い機種は現行無いだろう。なぜならこのあとの世代(EPSON)が300dpiでは速度面においてはむしろ退化していると思われるからだ。Canonはわからない。8300UFより速いとすれば8400F/8400FVだろう。600dpiに関しては、常用するなら最新機種を含め別のものを検討した方が良いかもしれない。

2006/12/29(金)Aviutlを自動化する

2006/12/29 21:49 PC(全般)
AviutlはCUIで使うことを前提にしていないので、全自動化が面倒くさい。例えばエンコード設定をファイルごとに変えずに、全ディレクトリのMPEG2をAVIに変換したいときなんかに。もちろんバッチ処理をかければいいのだが、1ファイルごとに何手順か操作する必要はあるのだった。

今ままではjobsファイルを書くRubyスクリプトを作ってVirtualDubMod(本家と違ってMPEG2が読める)に投げてやらせていたのだが、jobsファイルのちゃんとした仕様が分かってなかった所為かどうも変なaviを作ってしまうことがあった。そしてインターレース解除がやっぱり変だ。ボケボケだし。どうにかしたい。

調べているときにuwscなるソフトを発見。マウス、キーボードの操作や、メニュー操作、ボタンクリックもスクリプトで書けるようだ。これはいい。

ということで、uwscで下のようなスクリプトを書いた。これをRuby+Apolloで作った簡易GUIでループ部分をファイルごとに書いて回すことにする。上手いこと失敗した状態をトラップできるようになればもうちょっと固くなりそう。少し楽になったかな。

※まるものMPEG-2 VIDEO VFAPI Plug-Inを最新のに更新したら、旧VFAPIで発生していた壊れ気味のMPEG2に当たるとエンコードが大破綻する問題が大きく解消されていた。PC-MV5DX/PCIで録画中に負荷かけたりすると、そういうファイルが出来るんだよね。で、フレームがぐちゃぐちゃ、音が全く合ってないファイルが出来ちゃったりしてたんだけど。足を向けて眠れません。あとは是非AC-3対応に(ry
ReadFile = "F:\みんなのうた_02281654.MPG"
OutPutFile = "F:\test.avi"
ID = Exec("c:\online\aviutl\aviutl.exe")

//バッチのクリア
ClkItem(ID, "ファイル\バッチ出力")
ClkItem(GetID("バッチ出力"), "すべて削除")
if GetID("OK") then ClkItem(GetID("AviUtl"), "OK")

ClkItem(GetID("バッチ出力"), "閉じる")

////////ここからループ
//読み込み
ClkItem(ID, "ファイル\開く (Ctrl+O)")
SendStr(GetID("ファイルを開く"), ReadFile, 1, TRUE)
ClkItem(GetID("ファイルを開く"), "開く")

while ClkItem(ID, "ファイル\AVI出力 (Ctrl+S)") <> TRUE
	Sleep(1)
wend

SendStr(GetID("名前を付けて保存"), OutPutFile, 1, TRUE)
ClkItem(GetID("名前を付けて保存"), "バッチ登録")

//同名のファイルが存在したら強制上書き
if GetID("はい") then ClkItem(GetID("名前を付けて保存"), "はい")
////////ここまでループ

ClkItem(ID, "ファイル\バッチ出力")
ClkItem(GetID("バッチ出力"), "開始")

Sleep(1)

while GetID("バッチ出力") <> -1
	Sleep(1)
wend

Sleep(1)

ClkItem(ID, "終了")

2006/12/20(水)FULLWIDTH TILDE問題

どこかで聞いたことはあったけど始めて遭遇。

WindowsのShift-JIS <-> UTF-8の変換表が本来の規格と異なるため、アプリ側の変換表で文字化けたりする問題。
VirtualDubのjobsにまとめてファイルを投げるRubyスクリプトを以前書いた。VirtualDubはUTF-8でファイル名を扱うのだが、このとき"~"を含むファイル名に対して、RubyのkconvでSJIS->UTF-8変換をしていたら"~"はWAVE DASHと解釈され\xe3809cに。しかしこれをVirtualDubからWindowsに投げると、"~"(FULLWIDTH TILDE)に戻せない。ということで「ファイルが見つかりません」となり問題が発生。

しかしコードの違いだけならまだしも割り当てられている文字そのものが違うとはまた面倒くさい……

ということで、Windows上の"~"の扱いである\xefbd9e(FULLWIDTH TILDE)に変換しないといけない。とりあえずRubyにはNKFがあるので、

NKF.nkf('-w --cp932', "~")

で変換すれば良し。なお、nkfのオプション指定はパースが厳しいようで、short optionは先に、先後に余計な空白を挟まないようにしないと上手く解釈されなかった(多分)。

今後、Windowsのファイル名をUnicodeで扱う際には念を入れてチェック。他に気をつける場面はなにがあるだろう。ファイル内部の表記はずれるのかな。Winアプリで"~"と表示されているとして、アプリ側がどのコードで保存し、表示でいじってるかとかはファイルの中を見ないと分からない?? 怖いなあ。
OK キャンセル 確認 その他