2012-09-07 28 views
4

嗨我想嘗試使用Brad Larson的GPUImage sdk在iOS中對照片進行素描效果。我想創建這樣使用Brad Larson GPUImage在Obj中創建素描效果照片C

enter image description here

素描效果但素描效果我得到的是這樣的

enter image description here

我使用GPUImageSketchFilter來產生這種效果,下面是參數我提供實現這種效果:

setTexelHeight:(1.12/480.0) 
setTexelWidth:(0.5/320.0) 

請教我如何實現這個e ffect ..

布拉德你的建議去,我有這個...

enter image description here

我的目的:我需要做出正確的圖像看起來像左邊.. PLS建議我.. !!

+0

你是怎麼產生的第一形象? – janusbalatbat

+0

@janusfidel第一張圖片是從草圖應用程序生成的。 –

+4

我的「草圖」濾鏡僅僅是邊緣強度由黑暗指示的Sobel邊緣檢測。上面的圖像是通過完全不同的方式處理的。邊緣附近較暗的暈圈似乎表明使用了不清晰的遮罩,所以這是一個階段。它也看起來像他們應用噪聲紋理的圖像。我只能說,你應該嘗試不同的過濾器組合,看看最接近你的是什麼。 –

回答

0

我看到一個更好的素描效果的代碼,但是我在過濾不好,我不能寫一個自定義過濾器GPUImage應用此:

float res = iResolution.x; 
float n0 = 97.0/res; 
float n1 = 15.0/res; 
float n2 = 97.0/res; 
float n3 = 9.7/res; 
float total = n2 + (4.0 * n0) + (4.0 * n1); 

const vec3 div3 = vec3(1.0/3.0); 

void main(void) { 
    float offset, temp1, temp2; 
    vec4 m, p0, p1, p2, p3, p4, p5, p6, p7, p8; 
    offset = n3; 

    p0=texture2D(iCamera,iScreen); 
    p1=texture2D(iCamera,iScreen+vec2(-offset,-offset)); 
    p2=texture2D(iCamera,iScreen+vec2(offset,-offset)); 
    p3=texture2D(iCamera,iScreen+vec2(offset, offset)); 
    p4=texture2D(iCamera,iScreen+vec2(-offset, offset)); 

    offset=n3*2.0; 

    p5=texture2D(iCamera,iScreen+vec2(-offset,-offset)); 
    p6=texture2D(iCamera,iScreen+vec2(offset,-offset)); 
    p7=texture2D(iCamera,iScreen+vec2(offset, offset)); 
    p8=texture2D(iCamera,iScreen+vec2(-offset, offset)); 
    m = (p0 * n2 + (p1 + p2 + p3 + p4) * n0 + (p5 + p6 + p7 + p8) * n1)/total; 

    //convert to b/w 
    temp1 = dot(p0.rgb, div3); 
    temp2 = dot(m.rgb, div3); 

    //color dodge blend mode 
    if (temp2 <= 0.0005) { 
     gl_FragColor = vec4(1.0, 1.0, 1.0, p0.a); 
    } else { 
     gl_FragColor = vec4(vec3(min(temp1/temp2, 1.0)), p0.a); 
    } 
} 
+0

你能幫我把這個我在哪裏可以在GPUIImage中添加上面的代碼 –