ソーベル物品はオペレータ前記、Sobelオペレータは、ローカルガイドの数はより激しい変換、やすくエッジを説明大きな一次微分を、シミュレートされる。
しかし、それは、それのF「(T)誘導体へと続きますか?
我々は、画像のエッジを見つけるために、この機能を使用することができる二次微分= 0の「エッジで」見つけることができる。問題があることに注意してください、0の二次導関数は無意味位置であってもよいです
ラプラシアンの導出
例では、x方向に解決:
最初の差を、F '(x)= F (X) - F(X - 1)
二次差:F '(x)= F'(X + 1) - F「を( X)=(F(X + 1) - F(X)) - (F(X) - F(X - 1))
簡略化した後、F '(x)は= - 1) - 2 F(X fは(X))+ F(X + 1)
の係数の前に抽出された[1、-2、1]
同様にy方向に得られる係数[1、2,1]
この場合、ラプラス行列を取得するまで追加
OpenCVの実現
デフォルトksize = 1、ksize = 3、及び効果は同じであり、それは、元の画像復元の上記ラプラシアン行列で使用され
機能することができ、特定のフィルタをどうgetDerivKernelsが取得
DXを、DYは、一次微分の数を表します。
def cal_filter(dx,dy,ksize):
kx, ky=cv.getDerivKernels(dx, dy, ksize)
print(kx)
print(ky)
cal_filter(2,2,1)
cal_filter(2,2,3)
cal_filter(2,2,5)
出力は
ksize = 1とksize = 3は、実際には同じであると見ることができます。
import cv2 as cv
def test():
src = cv.imread("/home/sc/disk/keepgoing/opencv_test/sidetest.jpeg")
src = cv.GaussianBlur(src, (3, 3), 0)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
dst1 = cv.Laplacian(gray, -1,3)
dst2 = cv.Laplacian(gray, -1,1)
cv.imshow("origin",src)
cv.imshow("dst1",dst1)
cv.imshow("dst2",dst2)
if 27 == cv.waitKey():
cv.destroyAllWindows()
test()
結果は以下の通りであります:
ラプラス比較的簡単とソーベルエッジ検出アルゴリズムは、一般的に使用される電流はブログの後ろに、キャニーですが。書き込まれる
アプリケーションシナリオのエッジ検出アルゴリズムの様々なを検索する場合や記事のほとんどは、OpenCVの中でどのように達成するかについて話ことがわかりましたとにコピーするお互いをコピーされます。良い2つのリンクが下に与えられたと思います個人的に話す
https://blog.csdn.net/xiaojiegege123456/article/details/7714863
https://dsp.stackexchange.com/questions / 74 /どのような因子-すべき -i-を検討・イン・ザ・エッジ検出アルゴリズムを選択します
グラデーションタイプの二次導関数はまた、変異を説明することができます。いくつかの場合において、そのような境界を見つけられないかもしれない唯一の一次導関数を使用して、グレースケール画像における均一な変化として、第2の誘導体は、有用な情報を提供することができます。二次導関数は、ノイズに敏感であり、溶液は、画像を平滑化し、いくつかのノイズを除去し、その後検出をエッジです。しかし、二次微分アルゴリズムの使用が検出されたゼロ交差の情報に基づいて、エッジ点は、後続の処理及び認識作業することが少なく助長得
ノイズに対するラプラスより感受性が、画像のグレーエッジ検出オペレータにほとんど変化は、牛などのよりよい効果Bisuobeierであり、図グレー変換のツリーが特に強力ではない:それを要約します。
最も一般的に使用され、実際に使用キャニーアルゴリズムです。ボーエンは、導入の後ろに行います。