Сглаживание краев и заполнение внутренних контуров в opencv с iOS

Пытаюсь загореть человеческую кожу с разной интенсивностью с помощью opencv. Я уже идентифицировал человеческую кожу и изменение цветового тона этих пикселей. Но это не гладко.

Снимок экрана 1

Слева вверху - исходное изображение. Справа вверху - канал насыщенности исходного изображения. Слева внизу - маска серой шкалы, определяющая расположение кожи на исходном изображении. Справа внизу - изображение результата с измененным цветовым тоном пикселей, находящихся в маске.

Теперь моя проблема в том, что в изображении маски остается некоторый пробел из-за изменения цветового тона или яркости исходного изображения. Вот почему эта часть отсутствует на изображении результата. Кто-нибудь может сказать мне, как я могу заполнить небольшие пробелы в изображении маски?

Пробелы в изображении маски

Другой, если кто-то может помочь мне сгладить только края моей загорелой маски, мне очень поможет. См. Справочное изображение ниже,

Острый загорелый край маски

Заранее спасибо.


person Anjum Shrimali    schedule 04.04.2013    source источник


Ответы (1)


как насчет?

morphologyEx(grey,grey,MORPH_CLOSE,getStructuringElement( MORPH_ELLIPSE,Size(7,7)));

хотя силуэт сливается для левой руки

простой

изменить: немного более вовлечен

Mat tmp=grey.clone();
morphologyEx(tmp,tmp,MORPH_GRADIENT,getStructuringElement(MORPH_ELLIPSE,Size(3,3)));
bitwise_not(tmp,tmp);
Mat smallholes=Mat::zeros(tmp.size(), CV_8UC1);
vector<vector<Point>> contours;
findContours(tmp,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
for(int i = 0; i < contours.size(); i++)
{       
    double area = contourArea(Mat(contours[i]));
    if(area<100)
        drawContours(smallholes, contours, i, 255, -1);
}
Mat done;
bitwise_or(grey,smallholes,done);
morphologyEx(done,done,MORPH_CLOSE,getStructuringElement(MORPH_ELLIPSE,Size(3,3)));

long

person Zaw Lin    schedule 06.04.2013
comment
Это отлично сработало !! Большое вам спасибо за это. В настоящее время я пытаюсь сгладить острые края после загара, как я уже упоминал на втором снимке экрана. Есть предложения по тому же поводу? - person Anjum Shrimali; 10.04.2013
comment
как насчет stackoverflow.com/questions/7644996/? Я лично еще не пробовал, но похоже, что это сработало как минимум у одного человека - person Zaw Lin; 10.04.2013
comment
@AnjumShrimali, что вы сделали для сглаживания краев? - person Sahil Kapoor; 16.12.2015