フレーム抽出処理(傾き補正)

フィルムの撮影がなかなか進まない(気が進まないと書いた方が正しいかもしれません)ので、撮影した画像からフレームを抽出する処理を少し詳しく説明します。
まずは撮影したフィルムの傾きを抽出します。
撮影画像は解像度が高すぎて処理に時間がかかるので、縮小した画像を使います。
撮影画像の一例がこれです。

 

これにcanny検出器をかけてエッジを抽出した画像がこれです。

 

次にフィルムのエッジを抽出するために直線を検出するhough変換をかけた結果がこれです。

 

フィルムが曲がっていたりするので、フィルムのエッジが優位に検出されるわけではありません。ですので、この時点ではエッジ候補として多数の直線を取得しています。その上で、まず、最も上側にあり、かつ、ほぼ水平の線分をフィルムの右端として抽出します。毎回同じ条件で撮影するので、フィルム幅はほぼ固定値となります。その値を予め指定しておくことで、フィルム右端から左端のおおよその位置がわかります。そこで、フィルム右端の直線と傾きがほぼ等しく、想定されるフィルム左端近辺にある直線をフィルム左端として抽出します。このようにしてフィルムの左端、右端を決定した画像がこれです。

 

経験上、フィルム右端は劣化により曲がる度合いが大きいので、フィルム左端の直線の傾きをフィルムの傾きとしています。この値を基に傾きを補正した画像がこれです。

 

次回はこの画像からガイドの穴を基準にフレームを抽出する方法を説明しようと思います。