iOS OpenCV之蔡徐坤教你玩轉邊框畫

2021-09-24 07:14:50 字數 2936 閱讀 5964

ios實現字串動畫

ios-opencv之蔡徐坤教你玩轉邊框畫

這一系列的文章已經寫了第二篇了,所以這個系列將會轉變為**文章,每當我有什麼新的發現,都會更新。

現在關於opencv的很多有趣的例子,都是python的。

這篇文章的整體思路**於知乎maker畢的文章:蔡徐坤教你用opencv實現素描效果

這篇文章說是素描,其實與廣義素描差距很大,準確的說應該是叫邊框畫。

先上一下效果圖吧。

看起來是不是挺有意思的

這裡我們還是要先講述一下步驟,這裡先展示下原圖

1. 將給定轉灰度圖

將從原來的三維層面,降到一維。

- (uiimage *)grayimage:(uiimage *)image 

複製**

處理完畢後,我們能看到原來的蔡老師變灰了。

2. 對灰度進行高斯模糊

首先,先來講一下如何進行簡單的模糊處理

所以上的每乙個畫素,都有乙個畫素數值。

我們可以以當前畫素點為中心,取乙個n * n的矩陣。

這裡假定我們選了乙個中心灰度值為190的畫素點,它的周邊畫素的畫素灰度值為100(255為純白色)的3*3的畫素矩陣

模糊處理的簡單形式就是做平均,也就是將中間點的畫素點和周圍8個畫素點的灰度值取平均值。也就是(100 * 8 + 190) / 9 = 110

簡單的模糊處理就是這麼做的,不過高斯模糊是通過高斯函式去進行相應的計算,這裡我找到了一篇相當好的文章:高斯模糊

- (uiimage *)gaussianblurimage:(uiimage *)image 

複製**

有乙個模糊的蔡老師出現了

3. 對影象進行自適應二值化處理

這一步其實要講的就是二值化,其實他的概念很簡單。我們將灰度圖上的某乙個畫素點的灰度值與給定的乙個值進行比較,小於這個給定值的我們將其灰度值設定為0(黑色),大於的設定為255(白色)。我們給定的比較值被稱之為閾值

當然,這種二值化太過固化、死板。因為真實的**有可能有陰影之類的遮擋,會導致我們的全域性二值化,產生很多的誤差,如下圖右上角所示:

因此我們需要採用自適應二值化的方法,這裡我們選擇採用自適應高斯二值化(效果如上圖右下角)

- (uiimage *)adaptivethresholdimage:(uiimage *)image 

複製**

蔡老師的線條出現啦

4. 二值化進行再次模糊

現在蔡老師的衣服都已經變成線條了,基礎的描邊效果已經達成。但是我們可以看到,中比如說地面上,還有一些黑色的我們並不想要的點(我們稱這些點為噪點)。以及蔡老師的線條還是有點細,所以我們需要將蔡老師的線條變粗些。

將上面的再次進行高斯模糊。

蔡老師變得模糊了

5. 對模糊再次進行二值化

這裡我們再次進行二值化操作,因為現在已經相對乾淨,且並無陰影等干擾項。我們可以直接使用全域性二值化來加深邊框了(計算速度快)。

- (uiimage *)thresholdimage:(uiimage *)image 

複製**

6. 對進行噪點去除

現在需要去除中的小的噪點,我們就需要進行一系列的操作了

關於這些操作,我們在影象處理方面有專門的名詞描述:

腐蝕膨脹

腐蝕:

腐蝕通俗的來說,就是將原本的影象根據給定的核(為我們自定義的一種形狀,一般為n*n的正方形,n為奇數)縮小。

只有當原本的影象上對應核心周圍所有的點都有值時,我們才保留當前核心的值。

膨脹:

膨脹則正好相反,我們將給定的根據給定的核放大。

當我們掃瞄核的任意一點上有值時,當前核心點將會被賦值

腐蝕膨脹便是我們這步處理的關鍵。

它們之間的組合被我們稱之為開運算閉運算

開運算

我們先對進行腐蝕運算,然後進行膨脹運算

最終效果將如上圖的左下角結果

我們和原圖進行比較可以發現。

開運算可以去除毛刺,小橋和孤立的小點(在腐蝕運算中小點會直接消失)。最終總的位置和形狀不變(膨脹運算會恢復)

閉運算

閉運算這裡因為我們不會用到,因此不會過多贅述。

它和開運算的過程相反,先對原影象進行膨脹運算後進行腐蝕運算。

我們的目的是處理中的一些噪點,因此我們採用開運算來處理。

- (uiimage *)morphologyimage:(uiimage *)image 

複製**

乾淨了很多

7. 最後進行一次高斯模糊

我們最後在進行一次高斯模糊,使我們的影象效果更好。

這篇文章的對應demo**,如果大家覺得還不錯,請盡情的用你麼的star來砸我。

影象處理非常有趣,同時很高階。

我的部落格**

ZR860 扁鵲再世蔡徐坤 (貪心 堆)

有 n nn 位病人,坤坤有 vml v ml vml 鎮靜劑。第 i ii 位病人的緊急程度為 a ia i ai 鎮靜所需劑量至少為 b ib i bi 若選了 k kk 個病人 c1 ck c 1 sim c k c1 ck 則病人 c jc j cj 將得到 acj i 1 kacj v f...

徐明君教你如何玩轉社群粉絲經濟

在移動互聯聯接每個人的今日,社交網路讓網紅經濟 粉絲經濟的使用價值發大財絢麗多彩。銷售市場中,靠通俗化商品獲得顧客的局勢早已變成歷史時間,而冷門化 訂製化 人性化的商品則遭受粉絲們的親睞。網際網路推廣時期逐漸公升級社群運營時期,各種電子商務平台總流量比較有限,適用店家自身獲得總流量,造就現階段社群營...

成龍蔡徐坤合唱《神探蒲松齡》主題曲 傳遞新春祝福

成龍 蔡徐坤合唱電影 神探蒲松齡 主題曲 一起笑出來 片方提供 攝 太原1月31日電 記者 胡健 記者31日從片方獲悉,賀歲電影 神探蒲松齡 日前發布由成龍 蔡徐坤演唱的賀歲主題曲 一起笑出來 歌曲充滿了節日的氣氛,向觀眾傳遞新年祝福。一起笑出來 的作詞是剛剛與成龍合作打造了 我還是成龍 的趙佳霖及...