图片处理--羽化特效
生活随笔
收集整理的這篇文章主要介紹了
图片处理--羽化特效
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
float mSize = 0.5f;public Bitmap render(Bitmap bitmap){if(bitmap == null)return null;final int SIZE = 32768;int width = bitmap.getWidth();int height = bitmap.getHeight();int ratio = width >height ? height * SIZE /width : width * SIZE/height;//這里有額外*2^15 用于放大比率;之后的比率使用時需要右移15位,或者/2^15.int cx = width>>1;int cy = height>>1;int max = cx*cx + cy*cy;int min = (int)(max *(1-mSize));int diff= max -min;// ===>> int diff = (int)(max * mSize);int[] pixels = new int[width * height];bitmap.getPixels(pixels ,0 , width , 0 , 0 , width , height);for(int i=0 ; i<height ; i++){for(int j=0 ; j<width ; j++){int pixel = pixels[i*width +j];int r = (pixel & 0x00ff0000)>>16;int g = (pixel & 0x0000ff00)>>8;int b = (pixel & 0x000000ff);int dx = cx - j;int dy = cy - i;if(width > height){dx= (dx*ratio)>>15;}else{dy = (dy * ratio)>>15;}int dstSq = dx*dx + dy*dy;float v = ((float) dstSq / diff)*255;r = (int)(r +v);g = (int)(g +v);b = (int)(b +v);r = (r>255 ? 255 : (r<0? 0 : r));g = (g>255 ? 255 : (g<0? 0 : g));b = (b>255 ? 255 : (b<0? 0 : b));pixels[i*width +j] = (pixel & 0xff000000) + (r<<16)+ (g<<8) +b;}}return Bitmap.createBitmap(pixels ,width , height , Config.ARGB_8888);}
在PHOTOSHOP里,羽化就是使你選定范圍的圖邊緣達到朦朧的效果。 羽化值越大,朦朧范圍越寬,羽化值越小,朦朧范圍越窄。可根據(jù)你想留下圖的大小來調(diào)節(jié)。
算法分析:
1、通過對rgb值增加額外的V值實現(xiàn)朦朧效果
2、通過控制V值的大小實現(xiàn)范圍控制。
3、V ?= 255 * 當(dāng)前點Point距中點距離的平方s1 / (頂點距中點的距離平方 *mSize)s2;
4、s1 有根據(jù) ratio 修正 dx dy值。
Reference:http://www.cnblogs.com/lipeil/archive/2012/09/21/2696519.html
更加簡單的方式:
分析PS的羽化結(jié)果可以知道,羽化達成了兩個目的:1. 平滑輪廓線 2. 擴寬過渡區(qū)域
1.平滑輪廓線:可以采用均值濾波和cvSnakeImage()兩種方式,前者維護一個寬度為H的窗口,窗口內(nèi)均值濾波;而后者是OpenCV的C語言版本函數(shù)C++沒有包含,其原理是能量最小化,經(jīng)過測試前者的速度略高于后者,且當(dāng)H較大時,可以采用窗口加權(quán)減一加一的方式來代替每次都求H次加權(quán)的方式;
2.擴寬過度區(qū)域:采用對mask采用全圖均值濾波方法即可,卷積核的半徑越大,過渡區(qū)域越寬。
---------------------?
版權(quán)聲明:本文為CSDN博主「小熊不去實驗室」的原創(chuàng)文章,遵循CC 4.0 by-sa版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yangtrees/article/details/9210153
總結(jié)
以上是生活随笔為你收集整理的图片处理--羽化特效的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FreeMarker生成复杂word(包
- 下一篇: 9本4月程序员新书,Python书就占了