問題タブ [edge-detection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 負のピクセル値へのアクセスOpenCV
OpenCVの画像でゼロ交差エッジ検出を実行しようとしています。ぼかしてcvLaplace()を使用し、(0、max)からスケーリングします。私の質問は、負の値を正しく識別するような方法で、その画像のピクセル値にアクセスするにはどうすればよいですか?OpenCV(cvPtr2D)が提供する関数を使用すると、符号なし文字が返されます。アイデアやコメントはありますか?
ありがとうございました
image - 「類似画像」を見つけるための面取りマッチング アルゴリズムの使用方法
面取りマッチング アルゴリズム (エッジ マッチング アルゴリズム) を使用して「類似した」画像を見つける方法について、詳しく教えてください。一致した結果に「スコア」を付けることができるかどうかを知りたいです。
c# - エッジ検出された画像のエッジの長さを測定するには?
画像処理エッジ検出技術を使用して、倉庫内の箱数を取得したいと考えています。そこで、ソーベルアルゴリズムを使用してエッジを検出しました。次に、エッジの長さを測定する必要があります。エッジの長さを取得する方法と、最終カウントを取得するための適切なアルゴリズムを知っている人はいますか?
graphics - テーブルラインと大きな文字を区別する
私はいくつかのグラフィックス処理を行っており、エッジのあるビットマップがあり、文字からすべてのテーブルエッジを無視するロジックがあります。
0-背景色
1-無視されたエッジ
2-必要なエッジ
私のロジックは単純です。連続するピクセルの数が特定のしきい値を超える場合、たとえば20ピクセルの連続するエッジの場合、それは線と見なされ、無視されます。
私の問題は、HやTなどの大きなフォントサイズや文字では、確実にしきい値を超えることです。表の行を文字から分離するために実装する必要のある、より良い方法または追加のロジックがあるかどうかをアドバイスしてください。
[更新]追加の考慮事項:パフォーマンス。このロジックは、タッチ移動(ドラッグ)中に使用されます。何度も呼び出されるので、高速である必要があります。
algorithm - エッジ検出の最速の方法は何ですか?
私は、産業問題のための画像処理ベースのソリューションを実装することを考えています。
画像は赤い長方形で構成されています。その中に、円のマトリックスが表示されます。要件は、次の制約の下で円の数を数えることです。(実際のアプリケーション:ボトルケーシング内のボトルの数を数えます。不足しているボトルはありますか?)
- 操作にかかる時間は非常に短くする必要があります。
- 赤い長方形も検出する必要があります。私の目的はパッケージ内のアイテムを数えることであり、カメラをトリガーするメカニズム(センサー)はありません。したがって、カメラは写真を継続的にキャプチャする必要がありますが、プログラムには不要な画像を破棄する方法が必要です。
- 処理はリアルタイムである必要があります。
- 画像キャプチャに「ノイズ」がある可能性があります。円の代わりに楕円が表示される場合があります。
私の質問は次のとおりです、
- 与えられたシナリオに一致する最良のエッジ検出アルゴリズムは何ですか?
- エッジ検出以外に使用できるメカニズムはありますか?
- 私が使用する言語とシステムのパフォーマンスの間に大きな影響はありますか?
php - PHP でのエッジ検出ベースの画像の作成
私は興味があります-PHPで達成することは可能ですか:
1) 画像ファイルをサーバーに送信する 2) 画像を処理する = エッジを検出し、エッジに基づいて単純なストロークを作成する 3) サーバーにファイルを保存する / ユーザーのブラウザに送信する / なんでも
ここにいくつかの「サンプル」ファイルがあります ;P (ご覧のとおり、エッジ検出を有効にしたプログラムを使用して作成されたのではなく、手作業で - 例として):
algorithm - 三角形メッシュのエッジにラベルを付けるためのアルゴリズム
序章
より大きなプログラム(ボリュームグラフィックスのレンダリングに関連する)の一部として、任意の(ただし有限の)三角形の2Dメッシュに特定の方法でラベルを付ける必要がある、小さいがトリッキーなサブ問題があります。少し前に、その時点で使用していたテストメッシュに十分なソリューション(以下を参照)を作成しましたが、考えられるすべてのメッシュに対してこのアプローチがうまく機能しない可能性があることに気付きました。今、私はついに現在のソリューションがまったくうまく機能しないメッシュに遭遇しました-そして私はまったく異なる種類のアプローチを考え出すべきであるように見えます。残念ながら、自分の考え方をリセットすることはできないようです。そのため、ここで質問したいと思いました。
問題
下の写真を考えてみましょう。(色は問題の一部ではありません。視覚化を改善(?)するために色を追加しただけです。また、エッジ幅の変化はまったく関係のないアーティファクトです。)
すべての三角形(たとえば、オレンジ色のABCと緑色のABD)について、3つのエッジのそれぞれに、「0」または「1」などの2つのラベルのいずれかを付ける必要があります。要件は2つだけです。
- 三角形のすべてのエッジに同じラベルを付けることができるわけではありません。つまり、三角形ごとに2つの「0」と1つの「1」、または2つの「1」と1つの「0」が必要です。
- エッジが2つの三角形で共有されている場合は、両方で同じラベルを付ける必要があります。つまり、画像のエッジABが三角形ABCの場合は「0」とラベル付けされている場合、ABDの場合も「0」とラベル付けされている必要があります。
メッシュは本物の2Dメッシュであり、有限です。つまり、メッシュはラップせず、明確に定義された外側の境界があります。明らかに、境界線では要件を満たすのは非常に簡単ですが、内部ではさらに難しくなります。
直感的には、証明できなくても、少なくとも1つの解決策が常に存在する必要があるように見えます。(通常、いくつかあります-それらのいずれか1つで十分です。)
現在のソリューション
私の現在の解決策は本当にブルートフォースの解決策です(完全を期すためにここで提供されています-このセクションをスキップしてください):
- 三角形の4つのセットを維持します-ラベル付けされる残りのエッジの可能なカウント(0..3)ごとに1つ。最初は、すべての三角形がセット内にあり、3つのエッジにラベルが付けられたままになっています。
- ラベルのないエッジを持つ三角形がある限り:
まだ三角形が残っている、割り当てられていないエッジのゼロ以外の最小数を見つけます。言い換えれば、いつでも、ラベル付けが部分的に完了している三角形の数を最小限に抑えるように努めています。残りのエッジの数は1から3の間です。次に、この特定の数のエッジが割り当てられるように、そのような三角形を1つ選択します。この三角形に対して、次のようにします。- 残りのエッジのラベル付けが、他の三角形のラベル付けによってすでに適用されているかどうかを確認します。その場合は、上記の要件2で示されているようにラベルを割り当てます。
- これにより行き止まりになる場合(つまり、現在の三角形で要件#1を満たせなくなる場合)、プロセス全体を最初からやり直します。
- 次のように残りのエッジを割り当てます。
- これまでにラベル付けされたエッジがない場合は、最初のエッジをランダムに割り当てます。
- 1つのエッジがすでに割り当てられている場合は、反対のラベルが付けられるように2番目のエッジを割り当てます。
- 2つのエッジが割り当てられた場合:同じラベルが付いている場合は、3番目のエッジに反対のラベルを割り当てます(明らかに)。2つのラベルが異なる場合は、3番目のラベルをランダムに割り当てます。
- 未割り当てのエッジの数が異なる場合は、三角形のセットを更新します。
- 私たちがここに着いたら、解決策があります-やったー!
通常、このアプローチは数回の反復で解決策を見つけますが、最近、アルゴリズムが1〜2千回の再試行後にのみ終了する傾向があるメッシュに遭遇しました...これは明らかに、終了しないメッシュが存在する可能性があることを示唆しています。
今、私は常に解決策を見つけることが保証されている決定論的アルゴリズムが欲しいです。メッシュはそれほど大きくなく、ラベル付けは基本的に新しいメッシュがロードされたときにのみ実行する必要があるため、計算の複雑さはそれほど大きな問題ではありません。これは常に発生するわけではありません。したがって、(たとえば)指数関数を使用するアルゴリズムそれが機能する限り、複雑さは問題ないはずです。(しかしもちろん:より効率的であるほど良いです。)
ここまで読んでいただきありがとうございます。さて、どんな助けでも大歓迎です!
編集:提案された解決策に基づく結果
残念ながら、Dialecticusによって提案されたアプローチを機能させることができません。うまくいかなかったかもしれません...とにかく、開始点が緑色の点で示されている次のメッシュを考えて
みましょう。少しズームインしてみましょう...
それでは、アルゴリズムを開始しましょう。最初のステップの後、ラベル付けは次のようになります(赤=「スター付きパス」、青=「リング状パス」):
これまでのところ良好です。2番目のステップの後:
そして3番目:
... 4番目:
しかし今、私たちは問題を抱えています!もう1ラウンドやりましょう。ただし、マゼンタでプロットされた三角形に注意してください。
私の現在の実装によると、マゼンタの三角形のすべてのエッジはリングパス上にあるため、青色である必要があります。これは事実上反例になります。どういうわけか間違っているかもしれません...しかし、いずれにせよ、開始ノードに最も近い2つのエッジを赤にすることはできません。3番目のラベルが赤で表示されている場合、そのソリューションはもはやアイデアに実際には適合していないようです。
ところで、これが使用されたデータです。各行は1つのエッジを表し、列は次のように解釈されます。
- 最初のノードのインデックス
- 2番目のノードのインデックス
- 最初のノードのx座標
- 最初のノードのy座標
- 2番目のノードのx座標
- 2番目のノードのy座標
開始ノードは、インデックス1を持つノードです。
次に、RafałDowgirdによって提案された方法を試してみるべきだと思います...しかし、おそらくしばらくの間、まったく異なることをする必要があります:)
java - 3D配列から境界情報を取得する
ねえ、私は現在、3D配列から情報を抽出しようとしています。ここで、各エントリは、そこから何かを引き出すための座標を表します。問題は、配列が途方もなく大きい(そしてそれらのいくつかがある)ということです。つまり、実際にすべてを描画することはできません。
そのとき私が達成しようとしているのは、必要に応じて配列のシェルである外側の座標の表現を描画することです。この配列はいっぱいではないか、数ピクセルしか設定されていない大きな空のスペースがあるか、ピクセルデータの大きなクラスターがグループ化されている可能性があります。どんな形が期待できるのか(単純な立方体か複雑な凹面メッシュか)わからず、境界線を効果的に抽出するアルゴリズムを考え出すのに苦労しています。この配列は、ポイントのセットを3D空間に効果的に格納します。
6つの2Dメッシュ(3D配列の各側に1つ)を作成し、各位置で見つけることができる最も浅いポイントを取得して、別々に描画することを考えました。ただし、前述したように、この3D形状は凹型である可能性があり、このアプローチでは問題が発生します。上部に円がある円錐を想像してください(円錐の底よりも大きい円)。上部と側面のメッシュは形状から正しい深度情報を取得しますが、下部のメッシュは垂直線を介してベースを円に接続し、円錐形を効果的に緩めます。
次に、配列をスライスごとに分析し、スライスデータから2つのメッシュを作成することを考えました。これはどのタイプの形状でも機能するはずですが、各スライスの境界情報を正確に提供するアルゴリズムを見つけるのに苦労しています。繰り返しになりますが、スライスから高さマップを作成しようとすると、凹みがある場合に問題が発生します。また、ある種のエッジ追跡アルゴリズムを使用しましたが、配列は連続データを提供せず、各スライスに沿って連続エッジがないことはほぼ確実です。
医用画像などで使用されているボリュームレンダリングを調べてみましたが、私が抱えている問題と同様の問題を扱っているため、実際に使用できるものは見つかりませんでした。
この種の問題や貴重な情報を経験したことがある人がいたら、私を正しい方向に向けてください。
PSシェルの閉じた表現を取得したいので、以前の2Dメッシュアプローチです。ただし、シェルポイントを接続せずに単純にシェルポイントを取得するアプローチは、それでも非常に役立ちます。
ありがとう、Ze
c# - 画像処理におけるエッジ検出
検出されたソーベル エッジとしきい値のバイナリ イメージの長方形のカウンターを取得する必要があります。c シャープを使用して実装できる、カウントを取得するための適切なアルゴリズムを知っている人はいますか。
ruby - 座標と色が与えられた場合、その色の隣接する領域をプログラムで決定するにはどうすればよいですか?
私はRubyとRMagickを使用して画像を処理していますが、問題は言語に依存しません...
私は基本的に表形式のデータの画像を処理しており、セルを決定する最も簡単な方法の1つは、白の連続した領域(または背景色が何であれ)を検出してから、コンテンツの境界ボックスを取得することです。
しかし、特定の場所で色の連続した領域を決定する最も効率的な方法は何ですか?