3

プロジェクトで形状検出のためにエッジを検出する必要があります。現在、私はMATLABを使用していますが、より良い出力が得られる場合はopenCVに満足しています。ここに問題があります。私が持っているサンプル画像には、表面が粗いオブジェクトが重なっています。このコードを使用して良好な出力を得ていますが、表面の粗さによって出力が低下します。私はMATLABでこのコードを楽しんでいます:

a = imread('D:\images\wheatstarch.jpg');
I = rgb2gray(a);
imshow(I)
thresold = graythresh(I);
se1=strel('diamond',2);
I1=imerode(I,se1);
bw = edge(I1,'canny'); 
figure;
imshow(bw);

私はこの出力を得ています: http://i49.tinypic.com/vg7fns.png

出力を形状検出に使用できるように、より良い出力が必要です。

ダウンロード用入力画像 http://www.profimedia.si/photo/wheat-starch-granules/profimedia-0035237439.jpg

4

2 に答える 2

0

フォトショップでファイルを操作すると、フォトショップはエッジエッジを検索し、その後にレベルコマンドを実行すると、探しているような出力が得られます。フォトショップを使用することをお勧めしません。フォトショップは、グラフィックファイルを処理する方法を視覚化するための便利なツールです。私はいつも自分のコードを書いているので、既成の解決策を提案することはできません。

私が見ているのは、フォトショップのエッジの検索でエッジの硬さのグレースケール結果が得られ、探しているオブジェクトはエッジが最も硬いものです。

取得しているように見えるのは、最初に画像を白黒に変換し(levelコマンドのように)、次にエッジを見つけることです。白黒への変換は、シャドウに任意の線を作成し、それをトレースします。これにより、元の画像に、シャドウ内のグレーがトレース内の人工的な線にスムーズに遷移するように表示されます。

グレースケールでエッジを作成し、次にグレースケールエッジを白黒に変換することにより、グレーのスムーズなシフトによってエッジが生成されなくなります。

于 2013-02-17T17:28:57.240 に答える
0

Canny よりもはるかに優れたパフォーマンスを発揮する最先端のエッジ検出を備えたBSDSを調べてみてください。
また、ソース コード (Linux 用にコンパイルされた matlab) もあります。

于 2013-02-18T08:39:40.963 に答える