ページの歪み補正 (Page Dewarping)
- 巻いているページ画像を平坦化する作業を最適化問題として扱う
背景
- Leptonicaライブラリや Coordinate Transform Model (CTM) 手法など、既存の歪み補正手法は階層的な問題分解アプローチを使用している
- テキストを行単位に分離
- 行が平行かつ水平になるようなワーピング(warping)や座標変換を求める
- CTMの3Dシリンダーモデルベースのアプローチから着想を得て、ページ形状を決定するパラメータを用いた独自のパラメトリックモデルを作成
- 3D回転/移動ベクトル、ページ曲率の勾配、水平線オフセットなど
- 最適化問題として定義
- 元の写真で水平テキスト領域に沿ってキーポイントを見つける
- 初期推定値から始めてモデルパラメータを最適化し、キーポイントの再投影誤差を最小化
手順
- ページ境界を抽出
- テキスト輪郭を検出
- 二値化、モルフォロジー演算、連結成分解析を使用
- 縦書きテキスト表も検出できるように特化
- テキスト輪郭を水平領域ごとにグループ化
- 水平領域でキーポイントをサンプリング
- 初期モデルパラメータを推定
- 最適化で再投影誤差を最小化
- scipy.optimize.minimize の Powellソルバーを使用
- 実行時間の大半を占める
- 最適モデルで座標変換した後、画像をリマッピングして二値化
結果
- さまざまなサンプル画像でうまく動作
- モデルパラメータ数が多く、最適化に時間がかかる
- 横方向の歪みは考慮していない
まとめ
- 背景知識を積み上げ、最適化問題として定式化する典型的なワークフロー
- Deformable Part Model、Active Appearance Model に似たアプローチ
- Emacs、Pylint などのツール活用ノウハウも得られる
- 追加の発展計画はないが、コンピュータビジョンを教える際に参考になるプロジェクト
GN⁺の意見
- 実際の使いやすさを考えると、横方向の歪みも補正する必要がありそう。これにはCTMのような、より精緻なモデルが必要になりそう。
- 最適化速度の改善が重要に見える。パラメータ数を減らしたり、高速な最適化手法を使ったりすると役立ちそう。
- ディープラーニングベースの手法と比較すると面白そう。ディープラーニングが特徴点抽出とモデリングを同時に解決してくれるかもしれない。
- 産業現場の文書デジタル化作業などに活用するには、多様なレイアウトの文書に対する頑健性をさらに確保する必要がありそう。
- オープンソースとして公開されているのは良いが、実運用のためにはPythonスクリプトよりもスタンドアロン実行可能プログラムとして配布するほうがよさそう。
1件のコメント
Hacker Newsの意見
要約:
de-curlingが課題だったde-wrinklingも試してみるとよさそうde-warpingが可能