数字の周りの小さなボックスを検出する効率的な方法を探しています(画像を参照)?私はすでにハフ変換を使おうとしましたが成功しませんでした。何か案は?ヒントが必要です!私はopencvを使用しています...
2 に答える
インスピレーションを得るために、あなたは見ることができます
- Matlabビデオ数独ソルバーのデモと説明
- 数独グラブ、iPhoneアプリ、その作者は彼のブログでコンピュータービジョンの部分を説明しています
または、常に同じグリッドを探している場合は、次のようなものを展開できます。
- グリッドの完全な人工テンプレートを作成し、すべてのコーナーからすべての座標を検出または保存します。
- ターゲット画像で、たとえばハリスポイントを使用して同じことを行います。創造性を発揮してください。画像に見られる明確な三角形を使用できる場合もあります。
- テンプレートからの座標と見つかったハリスポイントを使用して
x = Ax'
、テンプレートとターゲット画像の間のアフィン変換を決定します。次に、その変換を使用して、テンプレートグリッドをターゲット画像にマッピングできます。少なくとも、これにより、さらなるセグメンテーションをガイドするのに役立ついくつかの事前情報が得られます。
アフィン行列の推定のアイデアと例の要点は、 Zissermansの著書「 ComputerVisionのMultipleViewGeometry」と「 PeterKovesiA
」のサイトにあります。
まず、シート全体の長方形の境界を検出してから、パースペクティブ変換を適用して、シートを真に長方形にします。画像のその部分を切り取ります。可能であれば、白と灰色のサブ長方形を交互に同じ背景の明るさにするようにしてください。おそらく、適応ヒストグラム均等化を試してください。
そうすれば、ハフ変換のパフォーマンスが向上する可能性があります。または、MATLABCentralでのRobertBemisによるこのデモンストレーションとほぼ同様のアプローチを取ることもできます(LottoカードではなくDNAマイクロアレイ画像を分析しますが、基本的にグリッドに配置されたアイテムの境界ボックスを見つけます)。大まかに言うと、このアプローチは、ピクセルの列と行に沿って自己相関を計算してグリッド内のアイテムの周期性を検出し、それを使用して各アイテムに境界ボックスを課すことです。
申し訳ありませんが、上記のアドバイスはほとんどMATLABベースです。私はopencvユーザーではないのではないかと思いますが、少なくともいくつかのアイデアが得られることを願っています。