最近從一個朋友那裏看到了一些基恩士的資料,本來是想看下那個比較有特色的濃淡補正濾波器的(因爲名字叫Shading Correction Filter,翻譯過來的意思有點搞笑),不過看到起相關文檔的附近有一個也比價有意思的功能,如下面的截圖所示:
左側有個叫Removing BackGround Information的算法,看測試圖片,他能夠把背景的紋理去除,然後只留下一些細小的線條特徵。在我的已經實現的算法裏,也確實有一個菜單叫做 Remove BackGruond,嘗試利用那個算法對這個圖像進行處理,可以得到如下所示圖像:
結果也相當不錯。
在基恩士裏這個功能的結果大概如下圖所示:
他把這個功能的名字翻譯爲實時差分,感覺有點無語。
我也在想基恩士是如何實現的呢,其實基恩士也算開放,他在我第一個貼圖裏提供了一份中間圖像,而且下部還說明是使用了膨脹和收縮後得到的中間結果。
在上圖這個界面中,可以看到這個功能有明暗抽取、抽取大小、處理方向等參數,通過這些參數我覺得就可以大概的猜測出函數的內部使用了哪些功能,比如明暗 應該就是決定了膨脹和收縮的前後順序, 抽取大小其文檔有說每次遞增2,很明顯就是收縮或膨脹的半徑的意思(半徑增加1,直徑增加2)。處理方向不用想就是指單獨水平、垂直或者兩者均膨脹或收縮。 有了這些猜測,就可以大膽的去嘗試了。下面是我對這個算法的嘗試結果:
就是按照明暗不同,執行收縮和膨脹,然後和原圖求差異,注意如果是提取Dark,最後在反色下。
這個結果和基恩士是比較接近的,只是對比度有所不同。
作爲對比,我們還那這個圖,但是我們抽取明部,然後抽取大小設置爲25,相當於半徑12,基恩士和我的比較結果如下所示:
除了對比不太一樣外,基本差不多。
另外,這個算法比我們原來的去除背景對光照不均勻圖像的處理效果要好,如下所示:
原圖 早期的Remove BackGround算法 基恩士的這個算法
下面還是起來看下濃淡補正算法了。
本文Demo下載地址: https://files.cnblogs.com/files/Imageshop/SSE_Optimization_Demo.rar,位於Detection-》Auxliary Enhance-》Image Extraction。裏面的所有算法都是基於SSE實現的。
如果想時刻關注本人的最新文章,也可關注公衆號: