カメラで焦点が合っているオブジェクトを検出し、焦点が合っていない背景を切り取って画像に置き換えたいと思います。これは可能ですか?
1 に答える
わずかに可能ですが、重い計算が必要です。私が知っているiOS用の既製のライブラリはありません。だから、「これは簡単にできるの?」と聞かれたら、残念ながらできないと答えるでしょう。
これを行うように見えるツールは、通常、次のようなショートカットを使用します。
- 顔検出を活用します (つまり、「オブジェクト」が人間の顔である限り機能します)
- エリア分析を活用する(つまり、焦点が合っているかどうかにかかわらず、写真の真ん中にあるものをすべてチェックします)
顔認識はQuartzで利用できると思います。とにかく、 iPhoneの顔認識をチェックしてください。
一般的で乱雑なケースでは、画像内のコントラストまたは空間周波数を小さな領域 (通常は 16x16 または 8x8 ピクセル) に分割して分析することにより、通常、フォーカスされた領域 (存在すると思われる領域) を認識することができます。コントラストの低い領域や高周波が欠落している領域は背景であり、高周波の存在 (シャープネス) は焦点の合った領域を示します。
これは画像の境界を教えてくれませんし、いくつかの誤検知 (および場合によっては陰性) も示します。ただし、このフェーズの最後には、たとえば 16 ピクセル側のテクセルごとに「フォーカスあり」、「フォーカスなし」、「不明」のステータスを持つ元のイメージのサンプリングが得られます。
このマップには、次のようなヒューリスティックを適用する必要があります。
- 境界線は通常、背景の一部です (したがって、テストで陽性となるはずです)
- 小さな次元の集中領域はおそらく偽陰性です
- 小さな次元の焦点の合っていない領域は、おそらく偽陽性です
この洗練段階の終わりには、焦点を当てた領域の連続した大きな「塊」がいくつかあるはずです。次に、これらの境界を調べて、色または明度の急激な変化を探します (通常、ブロブの中心から放射状の方向)。これは別のヒューリスティックです: 赤い背景に赤いリンゴの焦点を合わせないことを前提としています。または、焦点を合わせた場合、リンゴには黄色、白、または非常に明るい赤を示すハイライトがあり、「輪郭」をトレースできます。
各ブロブに独自の輪郭ができたら、切り抜きに使用できます。
Core Image などのツールを使用して、これらすべてを行う必要があります。
または、タスクにより適した vImage