Shader特效——“Canny邊緣檢測”的實現 【GLSL】
演算法參考自:
http://blog.sina.com.cn/s/blog_676b40ec0100z2pt.html
http://blog.csdn.net/xiajun07061225/article/details/6926108
在寫這篇文章的時候,發現網上關於canny的程式碼大多是基於C/C++,用GLSL的很少很少,甚至Github上也只有一份錯誤的實現,所以乾脆自己實現一份,效果如圖1,圖2為github錯誤實現的效果(之所以說它錯誤,是因為它沒有針對梯度方向的角度做Non-Max-Suppression,雙閾值的限定也沒有按照正統的演算法來做),基本上和Sobel的效果差不多。
原圖:
圖1:
圖2:
通過對比可見,圖1的邊界更加精細,而圖2的邊界較為粗糙,基本和Sobel後的效果沒有差別。
相關推薦
Shader特效——“Voronoi 影象”的實現 【GLSL】
程式碼參考自inigo quilez老師的Shader Toy 延伸閱讀: 用GPU實現Cellular Texture iq老師的相關的三篇文章: smooth voronoi voronoi lines voronois
Shader特效——“旋轉粒子”的實現【GLSL】
效果圖: GLSL程式碼及演算法解釋: // 動畫相關引數 float dotSize = 0.01; float iteration = 100.; float xAmp = 0.3;
Shader特效——“Canny邊緣檢測”的實現 【GLSL】
演算法參考自: http://blog.sina.com.cn/s/blog_676b40ec0100z2pt.html http://blog.csdn.net/xiajun07061225/article/details/6926108 在寫這篇文章的時候,發現網上關於ca
Shader特效——“馬賽克”的實現【GLSL】
參考自:http://tech.it168.com/n/2007-03-29/200703291522292_3.shtml 和 http://blog.csdn.net/simpledrunk/article/details/17170965 原圖:
Shader特效——“水彩畫”的實現【GLSL】
本文參考自兩篇部落格 首先是:http://tech.it168.com/n/2007-03-29/200703291522292_7.shtml 我對演算法進行了改進 原圖: 效果圖: 原圖: 效果圖: (以下為簡化程式碼) 片元著色器程
Shader特效——“幀動畫效果”的實現 【GLSL】
參考自:https://www.shadertoy.com/view/lsX3Rr iChannel0是一幅由一系列連貫動作的彩虹貓組成的影象,如下圖所示 ichannel1是任意一副背景影象
Shader特效——實現“抗鋸齒的黑白格”並原理解析【GLSL】
最終效果圖: 完整 程式碼與分析 如下: #extension GL_OES_standard_derivatives:enable //precision highp float; uniform int u_frequency; // ❤ 小格子的個數
Shader特效——實現“放大鏡/縮小鏡”【GLSL】
放大效果: 縮小效果: 片元著色器程式碼: const float in_circle_radius = 96.; //從客戶端傳入的放大鏡圓半徑 const f
Shader特效——實現“閃電”【GLSL】
效果圖 片元著色器程式碼: uniform float time_0_X; uniform vec4 color; uniform sampler3D Noise; uniform float
【算法隨記】Canny邊緣檢測算法實現和優化分析。
輸入 放置 位圖 code 計算 並且 比較 lan 開篇 以前的博文大部分都寫的非常詳細,有很多分析過程,不過寫起來確實很累人,一般一篇好的文章要整理個三四天,但是,時間越來越緊張,後續的一些算法可能就以隨記的方式,把實現過程的一些比較容易出錯和有價值的細節部分加以描
Canny邊緣檢測算法原理及其VC實現詳解(一)
常用 差分 實現圖 還需要 鏈接 傳感器 出了 關系 位置 轉自:http://blog.csdn.net/likezhaobin/article/details/6892176 圖象的邊緣是指圖象局部區域亮度變化顯著的部分,該區域的灰度剖面一般可以看作是一個階躍,既從
Canny邊緣檢測演算法原理及C語言實現詳解
Canny運算元是John Canny在1986年提出的,那年老大爺才28歲,該文章發表在PAMI頂級期刊上的(1986. A computational approach to edge detection. IEEE Transactions on Pattern Analy
【OpenCV學習】Canny邊緣檢測
影象的邊緣檢測的原理是檢測出影象中所有灰度值變化較大的點,而且這些點連線起來就構成了若干線條,這些線條就可以稱為影象的邊緣。 Canny邊緣檢測運算元是John F. Canny於 1986 年開發出來的一個多級邊緣檢測演算法。Canny 邊緣檢測的數學原理
使用CImg實現canny邊緣檢測和跟蹤
第一步,函式toGrayScale 將彩色影象轉換為灰度影象,根據RGB值和公式計算出灰度值即可,比較簡單。 CImg<uchar> canny::toGrayScale() { grayscaled = CImg<uchar>(img
Canny邊緣檢測演算法的實現
影象邊緣資訊主要集中在高頻段,通常說影象銳化或檢測邊緣,實質就是高頻濾波。我們知道微分運算是求訊號的變化率,具有加強高頻分量的作用。在空域運算中來說,對影象的銳化就是計算微分。由於數字影象的離散訊號,微分運算就變成計算差分或梯度。影象處理中有多種邊緣檢測(梯度)運算元,常用的
利用Canny邊緣檢測運算元進行邊緣檢測的原理及OpenCV程式碼實現
Canny運算元是John Canny在1986年發表的論文中首次提出的邊緣檢測運算元,該運算元檢測效能比較好,應用廣泛。 Canny運算元進行邊緣檢測的原理和步驟如下: ⑴消除噪聲。邊緣檢測的演算法主要是基於影象強度的一階和二階微分操作,但導數通常對噪聲很敏感,邊緣檢測
OpenCV使用Canny邊緣檢測器實現影象邊緣檢測
效果圖 原始碼 Canny邊緣檢測器是一種被廣泛使用的演算法,並被認為是邊緣檢測最優的演算法,該方法使用了比高斯差分演算法更復雜的技巧,如多向灰度梯度和滯後閾值化。 Canny
OpenCV 實現canny邊緣檢測
近期,整理了一些之前做過的影象處理內容,算是複習下基礎吧; 涉及canny邊緣檢測的OpenCV實現; 影象邊緣資訊主要集中在高頻段,通常說影象銳化或檢測邊緣,實質就是高頻濾波。Canny是常用的邊緣檢測方法,其特點是試圖將獨立邊的候選畫素拼裝成輪廓。 canny邊緣檢
【OpenCV】Canny 邊緣檢測
Canny 邊緣檢測演算法 1986年,JOHN CANNY 提出一個很好的邊緣檢測演算法,被稱為Canny編邊緣檢測器[1]。 Canny邊緣檢測根據對信噪比與定位乘積進行測度,得到最優化逼近運算元,也就是Canny運算元。類似與 LoG 邊緣檢測方法,也屬於先平滑後求導
【OpenCV】Canny邊緣檢測
五個步驟: 1.使用高斯濾波器對影象進行去噪 2.計算梯度 3.在邊緣上使用非最大抑制—NMS 4.在檢測道德邊緣上使用雙閾值去除假陽性 5.分析邊緣極其之間的連線,以保證保留真正的邊緣並消除不明顯的邊緣 import cv2 import nu