Создайте эффект эскиза для фотографий с помощью Брэда Ларсона GPUImage в Obj C

Привет, я хотел бы попробовать эффект эскиза на фотографиях, используя GPUImage sdk Брэда Ларсона в iOS. Я пытаюсь создать эффект эскиза, подобный этому

введите здесь описание изображения

Но эффект эскиза, который я получаю, такой

введите здесь описание изображения

Я использую GPUImageSketchFilter для создания этого эффекта. Ниже приведены параметры, которые я предоставляю для достижения этого эффекта:

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

Пожалуйста, предложите мне, как добиться этого эффекта ..

Брэд, исходя из твоих предложений, у меня есть это...

введите здесь описание изображения

Моя цель: мне нужно, чтобы правое изображение было похоже на левое.. Пожалуйста, предложите мне..!!


person Vivek T    schedule 07.09.2012    source источник
comment
как вы создали первое изображение?   -  person janusfidel    schedule 07.09.2012
comment
@janusfidel первое изображение было создано из приложения для рисования.   -  person Vivek T    schedule 07.09.2012
comment
Мой фильтр эскиза — это просто обнаружение края Собеля с силой края, обозначенной темнотой. Изображение, которое у вас есть выше, обрабатывается совершенно другим способом. Более темные ореолы по краям, кажется, указывают на использование нерезкой маски, так что это один из этапов. Также похоже, что они накладывают на изображение текстуру шума. Все, что я могу сказать, это то, что вы должны попробовать разные комбинации фильтров и посмотреть, что вам больше всего подходит.   -  person Brad Larson    schedule 07.09.2012
comment
Спасибо @BradLarson, я постараюсь повторить это и дам вам знать...   -  person Vivek T    schedule 08.09.2012
comment
Привет, @BradLarson, попробовав разные фильтры, я понял.. Я добавил обновленные изображения эффектов.. Можете ли вы предложить, что еще можно добавить, чтобы он выглядел идеально...   -  person Vivek T    schedule 12.09.2012
comment
@BradLarson Я использую то же самое. Но как я могу получить обработанное изображение из фильтра? Он отображается как UIView.   -  person Maulik    schedule 04.10.2012
comment
@Maulik - -imageFromCurrentlyProcessedOutput вернет UIImage из текущего обработанного вывода данного фильтра в вашей цепочке фильтров. Если вы просто хотите отобразить на экране, GPUImageView — лучший выбор, чем стандартный UIImageView.   -  person Brad Larson    schedule 05.10.2012
comment
@VivekT: такая же проблема. Не могли бы вы поделиться своим кодом, чтобы получить лучшее изображение эскиза? Что вы сделали или какие фильтры вы использовали, чтобы получить лучший результат?   -  person Maulik    schedule 04.12.2012
comment
@Maulik: Я все еще достиг идеального эффекта эскиза.. После части редактирования у меня не было много времени, чтобы поработать над этим.. Попробуйте объединить несколько фильтров эскиза.. Дам вам знать, если повезет!! :)   -  person Vivek T    schedule 19.12.2012
comment
@VivekT: Будет очень полезно, если вы расскажете мне, какие фильтры вы использовали для достижения идеального скетча...   -  person Maulik    schedule 19.12.2012
comment
@vivek: Привет, я также использую GPUImage sdk Брэда Ларсона для скетча, но я хочу знать идеальную комбинацию для идеального скетча .... не могли бы вы просто помочь мне?   -  person The iCoder    schedule 23.05.2013
comment
@PavanMore Эй, Паван, я пытался добиться идеального комбо-эффекта скетча .. Не могли бы вы рассказать мне о своих испытаниях скетча, чтобы я мог вам помочь ..?   -  person Vivek T    schedule 23.05.2013
comment
@VivekT: Ниже приведена ссылка на изображение, которое я получаю, применяя фильтр эскиза. Пожалуйста, проверь это. picpaste.com/Screen_Shot_2013-05-23_at_5.45.37_PM-jukcIHSh.png< /а>   -  person The iCoder    schedule 23.05.2013
comment
Следуйте инструкциям... на: мобильных устройствах. tutsplus.com/tutorials/iphone/ Вы найдете демо/учебник....   -  person MOHAMMED MINHAZ    schedule 09.09.2013
comment
@VivekT,@Maulik Вы получаете идеальное сочетание фильтров. Я тоже столкнулся с той же проблемой. Можете ли вы мне помочь?   -  person Payal Maniyar    schedule 16.01.2017


Ответы (2)


Есть некоторая информация о проблеме, с которой вы столкнулись. Надеюсь, это поможет вам. http://iphonedevsdk.com/forum/iphone-sdk-development/103548-pencil-sketch-of-an-image-in-iphone-sdk.html

person pradyumnad    schedule 20.09.2013

Я видел лучший код эффекта эскиза, но я плохо разбираюсь в фильтрах, я не могу написать собственный фильтр для 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);
    }
}
person Jackie    schedule 07.01.2015
comment
Не могли бы вы помочь мне в этом, где я могу добавить этот код выше в GPUIImage? - person Ajay.km; 25.10.2016