内の画像を検索します。私が達成したいのは、「実際の」画像(サイズとピクセル単位の位置)を見つけることです。私にとって私はすべてが「本物」の画像の周囲に境界線のいくつかの種類を持っている異なるイメージを持っている画像(オブジェクト検出)
課題は、境界は常に黒(ノイズの多い黒やグレーのあらゆる種類のことができます)と「リアル」の画像(この例では、サメと水)ではないということです色の任意の組み合わせを持って、彩度、...
は今、一般的に、私は...、キャニー、ブロブ検出などのアルゴリズム、ハフラインを認識してんだけど、私はちょうどそれらを使用して開始していることができます。これまでは特定の画像の境界線を見つけることができましたが、同じアルゴリズムとパラメータを次の画像に適用しようとするとすぐに機能しません。
CvInvoke.Canny(_processedImage, imgEdges, 60, 100)
とエッジを検出
- と
CvInvoke.GaussianBlur(_processedImage, bluredImage, New Drawing.Size(5, 5), 0)
- 2値化と
CvInvoke.PyrDown(srcImage, targetImage)
とCvInvoke.PyrUp(srcImage, targetImage)
- ボケ画像と
CvInvoke.CvtColor(_processedImage, tempMat, CvEnum.ColorConversion.Rgb2Gray)
- ダウンサンプリングをグレーに変換する:私の現在のアプローチは、この(擬似コード)のように見えます
- は `CvInvoke.FindContours(_processedImage、輪郭、何も、CVEで輪郭を探します
- Thresholding saturation channel and bounding box Thresholding, canny edge and finding contours
- :num.RetrType.External、CvEnum.ChainApproxMethod.ChainApproxSimple)
- 最大の輪郭が、私はすでに、例えばに基づいて、異なるアプローチを試みた実像
CvInvoke.Threshold(_processedImage, blackWhiteImage, _parameters.BinarizeThreshold, 255, CvEnum.ThresholdType.Binary)
であると仮定する
特に適切なパラメータを見つける方法上の任意のヒント(そのアプリすべての画像のために)、(適応性のある)スレッショルドやキャニーだけでなく、処理パイプラインを改善するためのアイデアなどのアルゴリズムは高く評価されるだろう。
アイデアとリンクをありがとう。私はこのことを正しく理解していますか?私は元の画像と同じサイズの完全に黒い画像から始め、黒から元の画像を引きますか?質問で述べたように、国境は常に黒ではなく、一種の灰色です。だから、私は国境に別の灰色で終わるだろう?次の問題は、内部の画像の座標とサイズが必要だということです。どうやってするか?申し訳ありませんが初心者の質問は、このstuftは本当に私には分かりません。 –
完全に黒い画像を減算することは、もちろんノーオペレーションですが、他のものを減算することはおそらく有用かもしれません。 BTW OpenCVには、画像間の絶対差を計算し、最大値を見つけるための組み込み関数があります。 – NickJH