你寫過哪些比較酷的 Matlab 程式碼?十行以內

一鍵磨皮

I= double(imread(‘1。jpg’));H = RF(I,30,100) - I + 128;G = imfilter(H,fspecial(‘gaussian’,[3 3],100));opacity = 50;Dst = (I*(100 - opacity)+(I+2*G-256)*opacity)/100;imshow([uint8(I) uint8(Dst)]);

這是輸入的原圖。

<;img data-rawheight=“636” data-rawwidth=“625” alt="你寫過哪些比較酷的 Matlab 程式碼?十行以內" data-isLoading="0" src="/static/img/blank.gif" data-src=“https://pic3。zhimg。com/b2e220c645b7c55b7b84bd8593fc780e_b。jpg” class=“origin_image zh-lightbox-thumb” width=“625” data-original=“https://pic3。zhimg。com/b2e220c645b7c55b7b84bd8593fc780e_r。jpg”>;

你寫過哪些比較酷的 Matlab 程式碼?十行以內

這是效果圖

<;img data-rawheight=“636” data-rawwidth=“625” alt="你寫過哪些比較酷的 Matlab 程式碼?十行以內" data-isLoading="0" src="/static/img/blank.gif" data-src=“https://pic4。zhimg。com/41d28e4989e5e2e77b57634220c6427b_b。jpg” class=“origin_image zh-lightbox-thumb” width=“625” data-original=“https://pic4。zhimg。com/41d28e4989e5e2e77b57634220c6427b_r。jpg”>;

你寫過哪些比較酷的 Matlab 程式碼?十行以內

再來兩張效果

<;img data-rawheight=“989” data-rawwidth=“1035” alt="你寫過哪些比較酷的 Matlab 程式碼?十行以內" data-isLoading="0" src="/static/img/blank.gif" data-src=“https://pic4。zhimg。com/a6a377c8908f5672d0bd502004445017_b。jpg” class=“origin_image zh-lightbox-thumb” width=“1035” data-original=“https://pic4。zhimg。com/a6a377c8908f5672d0bd502004445017_r。jpg”>;

你寫過哪些比較酷的 Matlab 程式碼?十行以內

這裡,

RF

是遞迴域變換濾波器(

Domain Transform Filter

),也可換成其它保邊平滑的濾波器(

Edge Perserving Filter)

,例雙邊濾波,導向濾波等。不是什麼黑魔法,就是

PhotoShop平湖法磨皮:

,按步驟用Matlab化而已。這裡,給出最後的計算公式,

Dest =(Src * (100 - Opacity) + (Src + 2 * GuassBlur(EPFFilter(Src) - Src + 128) - 256) * Opacity) /100

EPFFilter

是一種保邊平滑的濾波器,

Opacity

控制透明度,

GaussBlur

是高斯濾波了,簡單的PS的操作非常易於用

Matlab

程式化。

磨皮後可以再增加美白功能,也是不超過十行程式碼的,效果看起來更佳(其實我是想說,可以賣一個好價錢呢)。若是對面板美白,磨皮,祛痘這些演算法感興趣,可以在

Imageshop部落格

進一步學習。

<;img data-rawheight=“570” data-rawwidth=“1366” alt="你寫過哪些比較酷的 Matlab 程式碼?十行以內" data-isLoading="0" src="/static/img/blank.gif" data-src=“https://pic3。zhimg。com/bf8e0d157151ed8fcc6128dadd1e7072_b。jpg” class=“origin_image zh-lightbox-thumb” width=“1366” data-original=“https://pic3。zhimg。com/bf8e0d157151ed8fcc6128dadd1e7072_r。jpg”>;

你寫過哪些比較酷的 Matlab 程式碼?十行以內

補充說明,

Matlab

並沒有收錄

RF

這個函式,但

Matlab2014a

已經有

imguidedfilter

函式,在

Matlab2014a

可以執行以下6行程式碼。

I= double(imread(‘7。png’));H =double(imguidedfilter(uint8(I))) - I + 128;G = imfilter(H,fspecial(‘gaussian’,[3 3],100));opacity = 50;Dest = (I*(100 - opacity)+(I+2*G - 256)*opacity)/100;imshow([uint8(I) uint8(Dest)]);

它的成品做出來是這個樣子的。

<;img alt="你寫過哪些比較酷的 Matlab 程式碼?十行以內" data-isLoading="0" src="/static/img/blank.gif" data-src=“https://pic4。zhimg。com/8c860dc578fa8ac820b095a75ae1aa73_b。png” data-rawwidth=“1244” data-rawheight=“689” class=“origin_image zh-lightbox-thumb” width=“1244” data-original=“https://pic4。zhimg。com/8c860dc578fa8ac820b095a75ae1aa73_r。jpg”>;

你寫過哪些比較酷的 Matlab 程式碼?十行以內

除了此外,影象處理中很多演算法都可以用Matlab在10行內完成的。

比如美圖秀秀的濾鏡,彩鉛,素描等,我就不再洩露更多秘密了。

<;img data-rawheight=“665” data-rawwidth=“1258” alt="你寫過哪些比較酷的 Matlab 程式碼?十行以內" data-isLoading="0" src="/static/img/blank.gif" data-src=“https://pic1。zhimg。com/a05218dbde53e1716882db6c67ee86f0_b。jpg” class=“origin_image zh-lightbox-thumb” width=“1258” data-original=“https://pic1。zhimg。com/a05218dbde53e1716882db6c67ee86f0_r。jpg”>;

你寫過哪些比較酷的 Matlab 程式碼?十行以內

<;img data-rawheight=“665” data-rawwidth=“1258” alt="你寫過哪些比較酷的 Matlab 程式碼?十行以內" data-isLoading="0" src="/static/img/blank.gif" data-src=“https://pic4。zhimg。com/7240ab81264ea81da700959030ebfe93_b。jpg” class=“origin_image zh-lightbox-thumb” width=“1258” data-original=“https://pic4。zhimg。com/7240ab81264ea81da700959030ebfe93_r。jpg”>;

你寫過哪些比較酷的 Matlab 程式碼?十行以內

我曾有打算做出一款比美圖秀秀更加友好功能更加強大的修圖軟體,共享出去,但是一個人力量太渺小了。

非為牟利,只是因為我也修圖愛好者。

鉛筆畫特效:

你寫過哪些比較酷的 Matlab 程式碼?十行以內

去霧特效:

你寫過哪些比較酷的 Matlab 程式碼?十行以內