图像边缘检测:Canny算子、Prewitt算子和sobel算子

     边缘检测是检测图像中的一些像素点,它们周围的像素点的灰度发生了急剧的变化,我们认为在这过程中,图像中的物体不同导致了这一变化,因此可以将这些像素点作为一个集合,可以用来标注图像中不同物体的边界。边缘区域的灰度剖面可以看作是一个阶跃,即图像的灰度在一个很小的区域内变化到另一个相差十分明显的区域。边缘是图像中的重要的结构性特征,边缘往往存在于目标和背景之间,不同的区域之间,因此它可以作为图像分割的重要依据。在边缘检测中,它提取的是图像中不连续部分的特征,将闭合的边缘提取出来便可以作为一个区域。与区域划分相比,边缘检测不需要逐个的对像素进行比较,比较适合大图像的处理.

    如图

    边缘其实就是图像上灰度级变化很快的点的集合。这些点往往梯度很大。图像的梯度可以用一阶导数和二阶偏导数来求解。但是图像以矩阵的形式存储的,不能像数学理论中对直线或者曲线求导一样,对一幅图像的求导相当于对一个平面、曲面求导。对图像的操作,我们采用模板对原图像进行卷积运算,从而达到我们想要的效果。而获取一幅图像的梯度就转化为:模板(Roberts、Prewitt、Sobel、Lapacian算子)对原图像进行卷积。

    使用一阶导的算子有,prewitt,sobel和canny;使用二阶导的有lapacian

    (1)一阶导算子:

            1、prewitt

                通常用 f '(x) = f(x + 1) - f(x - 1) 近似计算一阶差分。可以提出系数:[-1, 0, 1],这个就是模板。在二维情况下是:

                -1, 0, 1

                -1, 0, 1

                -1, 0, 1

                这个就是prewitt算子。即

                f(x-1, y-1), f(x, y-1), f(x+1, y-1)

                f(x-1, y),    f(x, y),    f(x+1, y)

                f(x-1, y+1),  f(x, y+1),  f(x+1, y+1)

            2、sobel

                中心点 f(x, y) 是重点考虑的,它的权重应该多一些,所以改进成下面这样的

                -1, 0, 1

                -2, 0, 2

                -1, 0, 1

                这就是 Sobel 边缘检测算子,偏 x 方向的。同理可得偏y方向上的。

                -1, -2, -1

                0,  0,  0

                1,  2,  1

                分别计算偏 x 方向的 Gx,偏 y 方向的 Gy,求绝对值,压缩到 [0, 255]区间,即 G(x, y) = Gx + Gy 就是 sobel 边缘检测后的图像了。因此sobel算子是有两个方向的。

            3、canny

                canny算子的计算步骤如下:

                    1.高斯滤波器平滑图像。去除噪声

                    2.一阶差分偏导计算梯度值和方向。通过sobel算子计算的。

                    3.对梯度值不是极大值的地方进行抑制。把不是极值的点,全部置0,去掉了大部分弱的边缘。所以图像边缘会变细。

                    4.用双阈值连接图上的联通点。设置双阈值 t1, t2, 是这样的,t1 <= t2 大于 t2 的点肯定是边缘;小于 t1 的点肯定不是边缘;在 t1, t2 之间的点,通过已确定的边缘点,发起8领域方向的搜索(广搜),图中可达的是边缘,不可达的点不是边缘。最后得出 canny 边缘图。

    (2)二阶导算子

    

            1、lapacian

                    一阶差分:f '(x) = f(x) - f(x - 1)

                    二阶差分:f '(x) = (f(x + 1) - f(x)) - (f(x) - f(x - 1))

                    化简后:f '(x) = f(x - 1) - 2 f(x)) + f(x + 1)

                    提取前面的系数:[1, -2, 1]

        二维的情况下,同理可得f '(x, y) = -4 f(x, y) + f(x-1, y) + f(x+1, y) + f(x, y-1) + f(x, y+1)提取各个系数,写成模板的形式

                    0, 1, 0

                    1, -4, 1

                    0,  1, 0

    考虑两个斜对角的情况

                    1,  1, 1

                    1, -8, 1

                    1,  1, 1

    与原图卷积运算即可求出边缘。

那么这些算子有什么区别呢:

    下面三张图分别是 sobel,canny,laplace 结果图。

        sobel 产生的边缘有强弱,抗噪性好,计算量小

        laplace 对边缘敏感,可能有些是噪声的边缘,也被算进来了

        canny 产生的边缘很细,可能就一个像素那么细,没有强弱之分。计算量大,但是准确

部分参考自:https://www.jianshu.com/p/2334bee37de5

    

    

  • canny绠楁硶Canny杈圭紭妫娴嬬畻瀛
    绛旓細鍦ㄨ绠楁満瑙嗚棰嗗煙涓紝Canny杈圭紭妫娴嬬畻瀛鏄竴涓鍏峰奖鍝嶅姏鐨勬妧鏈紝瀹冩槸鐢盝ohn F. Canny鍦1986骞存彁鍑哄苟瀹屽杽鐨勩傝繖椤圭畻娉曠殑鍒濊》鏄负浜嗘洿鍑嗙‘銆佹湁鏁堝湴璇嗗埆鍥惧儚涓殑杈圭紭锛屽叾鏍稿績鏄疌anny鐨勮竟缂樻娴嬭绠楃悊璁猴紝鍗矯omputational theory of edge detection銆傝鐞嗚娣卞叆鍓栨瀽浜嗚竟缂樻娴嬬殑杩囩▼锛屽畠骞堕潪鍗曚竴鐨勬楠わ紝鑰屾槸鐢变笁...
  • 鍥惧儚杈圭紭妫娴:Canny绠楀瓙銆丳rewitt绠楀瓙鍜宻obel绠楀瓙
    绛旓細杈圭紭鏄鍥惧儚涓殑閲嶈鐨勭粨鏋勬х壒寰侊紝杈圭紭寰寰瀛樺湪浜庣洰鏍囧拰鑳屾櫙涔嬮棿锛屼笉鍚岀殑鍖哄煙涔嬮棿锛屽洜姝ゅ畠鍙互浣滀负鍥惧儚鍒嗗壊鐨勯噸瑕佷緷鎹傚湪杈圭紭妫娴嬩腑锛屽畠鎻愬彇鐨勬槸鍥惧儚涓笉杩炵画閮ㄥ垎鐨勭壒寰侊紝灏嗛棴鍚堢殑杈圭紭鎻愬彇鍑烘潵渚垮彲浠ヤ綔涓轰竴涓尯鍩熴備笌鍖哄煙鍒掑垎鐩告瘮锛岃竟缂樻娴涓嶉渶瑕侀愪釜鐨勫鍍忕礌杩涜姣旇緝锛屾瘮杈冮傚悎澶у浘鍍忕殑澶勭悊.  ...
  • canny鏄粈涔堟剰鎬
    绛旓細canny鏄竴绉嶉潪甯告祦琛岀殑杈圭紭妫娴绠楁硶銆侰anny杈圭紭妫娴嬫槸涓绉嶉潪甯告祦琛岀殑杈圭紭妫娴嬬畻娉曪紝鏄疛ohn Canny鍦1986骞存彁鍑虹殑銆傚畠鏄竴涓闃舵鐨勭畻娉曪紝鍗崇敱澶氫釜姝ラ鏋勬垚銆傛湰鏂囦富瑕佽瑙d簡Canny绠楀瓙鐨勫師鐞嗗強瀹炵幇杩囩▼銆傞氬父鎯呭喌涓嬭竟缂樻娴嬬殑鐩殑鏄湪淇濈暀鍘熸湁鍥惧儚灞炴х殑鎯呭喌涓嬶紝鏄捐憲鍑忓皯鍥惧儚鐨勬暟鎹妯°傛湁澶氱绠楁硶鍙互杩涜杈圭紭...
  • sobel杈圭紭妫娴浼樼己鐐逛笌canny绠楀瓙鐨勪紭缂虹偣?
    绛旓細Sobel绠楀瓙妫娴鏂规硶瀵圭伆搴︽笎鍙樺拰鍣0杈冨鐨鍥惧儚澶勭悊鏁堟灉杈冨ソ锛宻obel绠楀瓙瀵硅竟缂樺畾浣嶄笉鏄緢鍑嗙‘锛屽浘鍍忕殑杈圭紭涓嶆涓涓儚绱狅紱褰撳绮惧害瑕佹眰涓嶆槸寰堥珮鏃讹紝鏄竴绉嶈緝涓哄父鐢ㄧ殑杈圭紭妫娴鏂规硶銆Canny鏂规硶涓嶅鏄撳彈鍣0骞叉壈锛岃兘澶熸娴嬪埌鐪熸鐨勫急杈圭紭銆備紭鐐瑰湪浜庯紝浣跨敤涓ょ涓嶅悓鐨勯槇鍊煎垎鍒娴嬪己杈圭紭鍜屽急杈圭紭锛屽苟涓斿綋寮辫竟缂樺拰寮...
  • Canny杈圭紭妫娴绠楁硶鐨勬楠ゅ拰鐞嗚В
    绛旓細Canny绠楀瓙涓嶮arr锛圠oG锛杈圭紭妫娴鏂规硶绫讳技锛圡arr澶х埛鍙风О璁$畻鏈鸿瑙変箣鐖讹級锛屼篃灞炰簬鏄厛骞虫粦鍚庢眰瀵兼暟鐨勬柟娉曘侸ohn Canny鐮旂┒浜嗘渶浼樿竟缂樻娴嬫柟娉曟墍闇鐨勭壒鎬э紝缁欏嚭浜嗚瘎浠疯竟缂樻娴嬫ц兘浼樺姡鐨勪笁涓寚鏍囷細锛1锛夊ソ鐨勪俊鍣瘮 锛屽嵆灏嗛潪杈圭紭鐐瑰垽瀹氫负杈圭紭鐐圭殑姒傜巼瑕佷綆锛屽皢杈圭紭鐐瑰垽涓洪潪杈圭紭鐐圭殑姒傜巼瑕佷綆锛涳紙2锛夐珮...
  • sobel杈圭紭妫娴浼樼己鐐逛笌canny绠楀瓙鐨勪紭缂虹偣?
    绛旓細涓銆乻obel杈圭紭妫娴嬶細1銆乻obel杈圭紭妫娴嬩紭鐐癸細杈撳嚭鍥惧儚(鏁扮粍)鐨勫厓绱犻氬父鍏锋湁鏇村ぇ鐨勭粷瀵规暟鍊笺2銆乻obel杈圭紭妫娴嬬己鐐癸細鐢变簬杈圭紭鏄綅缃殑鏍囧織锛屽鐏板害鐨勫彉鍖栦笉鏁忔劅銆備簩銆canny绠楀瓙锛1銆乧anny绠楀瓙浼樼偣锛氭硶鑳藉灏藉彲鑳藉鍦版爣璇嗗嚭鍥惧儚涓殑瀹為檯杈圭紭锛涙爣璇嗗嚭鐨勮竟缂樿涓庡疄闄呭浘鍍忎腑鐨勫疄闄呰竟缂樺敖鍙兘鎺ヨ繎銆2銆乧anny绠楀瓙缂虹偣...
  • 杈圭紭妫娴嬬殑杈圭紭妫娴嬬畻瀛
    绛旓細Canny绠楀瓙锛堟垨鑰呰繖涓畻瀛愮殑鍙樹綋锛夋槸鏈甯哥敤鐨杈圭紭妫娴鏂规硶銆 鍦 Canny 鍒涢犳х殑宸ヤ綔涓紝浠栫爺绌朵簡璁捐涓涓敤浜庤竟缂樻娴嬫渶浼橀骞虫粦婊ゆ尝鍣ㄤ腑鐨勯棶棰橈紝鍚庢潵浠栬鏄庤繖涓护娉㈠櫒鑳藉寰堝ソ鍦拌涓闃堕珮鏂鏁版牳浼樺寲銆傚彟澶 Canny 寮曞叆浜嗛潪鏈澶ф姂鍒舵蹇碉紝瀹冩槸璇磋竟缂樺畾涔変负鍦ㄦ搴︽柟鍚戝叿鏈夋渶澶ф搴﹀肩殑鐐广傚湪涓涓鏁g煩闃典腑...
  • 鍥剧墖澶勭悊-opencv-10.鍥惧儚閿愬寲涓杈圭紭妫娴
    绛旓細Canny杈圭紭妫娴绠楀瓙(澶氱骇杈圭紭妫娴嬬畻娉)鏄竴绉嶈骞挎硾搴旂敤浜庤竟缂樻娴嬬殑鏍囧噯绠楁硶锛屽叾鐩爣鏄壘鍒颁竴涓渶浼樼殑杈圭紭妫娴嬭В鎴栨壘瀵讳竴骞鍥惧儚涓伆搴﹀己搴﹀彉鍖栨渶寮虹殑浣嶇疆銆傛渶浼樿竟缂樻娴嬩富瑕侀氳繃浣庨敊璇巼銆侀珮瀹氫綅鎬у拰鏈灏忓搷搴斾笁涓爣鍑嗚繘琛岃瘎浠枫Canny绠楀瓙鐨勫疄鐜版楠ゅ涓嬶細edges = Canny(image, threshold1, threshold2[, ...
  • 鑳藉鎻愬彇鍑鍥剧墖杈圭紭鐗瑰緛鐨勭綉缁滄槸
    绛旓細鍏朵粬鐢ㄤ簬鎻愬彇鍥惧儚鐨勮竟缂樼壒寰 1銆丼obel绠楀瓙锛氳繖鏄竴绉嶇粡鍏哥殑杈圭紭妫娴绠楁硶锛岄氳繃璁$畻鍥惧儚涓儚绱犵偣鐨勬搴﹀己搴﹀拰鏂瑰悜鏉妫娴嬭竟缂銆2銆丆anny杈圭紭妫娴嬪櫒锛欳anny绠楁硶鏄竴绉嶅闃舵鐨勫浘鍍忓鐞嗘搷浣滐紝鍖呮嫭鍣0鍘婚櫎銆佽绠楀浘鍍忓己搴︽搴︺侀潪鏋佸ぇ鍊兼姂鍒朵互鍙婃粸鍚庨槇鍊煎鐞嗭紝鐢ㄤ簬妫娴嬪浘鍍涓殑杈圭紭銆3銆佹媺鏅媺鏂畻瀛愶細鎷夋櫘鎷夋柉绠楀瓙鏄...
  • 杈圭紭妫娴嬬畻瀛鏈夊摢浜?瀹冧滑鍚勬湁浠涔堜紭缂虹偣
    绛旓細杈圭紭妫娴绠楀瓙涓闃剁殑鏈塕oberts Cross绠楀瓙锛孭rewitt绠楀瓙锛孲obel绠楀瓙锛Canny绠楀瓙锛 Krisch绠楀瓙锛岀綏鐩樼畻瀛愶紱鑰屼簩闃剁殑杩樻湁Marr-Hildreth锛屽湪姊害鏂瑰悜鐨勪簩闃跺鏁拌繃闆剁偣銆俁oberts绠楀瓙 涓绉嶅埄鐢ㄥ眬閮ㄥ樊鍒嗙畻瀛愬鎵捐竟缂樼殑绠楀瓙锛屽垎鍒负4棰嗗煙鐨勫潗鏍囷紝涓旀槸鍏锋湁鏁存暟鍍忕礌鍧愭爣鐨勮緭浜鍥惧儚;鍏朵腑鐨勫钩鏂规牴杩愮畻浣垮緱璇ュ鐞嗙被浼间簬浜虹被...
  • 扩展阅读:早早孕一深一浅图解图 ... canny算子代码 ... 怀孕二条杠图片 ... canny边缘检测器 ... 2条杠一深一浅图片 ... 色差仪测试判定标准 ... 扫描图识别电影 ... canny 图像边缘分割 ... canny edge ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网