1. 程式人生 > >Shader特效——“Canny邊緣檢測”的實現 【GLSL】

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後的效果沒有差別。