¿Cómo puedo obtener el círculo de cierre mínimo con OPENCV?

Estoy usandocv::minEnclosingCircle(...) para obtener el círculo mínimo que evoluciona exactamente mi contorno, pero estoy obteniendo un círculo un poco más grande.

En otras palabras, estoy tratando de obtener algo como esto:

https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Simple_concave_polygon_Min_Enclosing_Circle.svg/441px-Simple_concave_polygon_Min_Enclosing_Circle.svg.png

Pero estoy obteniendo esto (el círculo):

Observe cómo el círculo es un poco más grande que el elemento a encerrar.

Necesito encerrar mi objeto en un círculo, no en una elipse.

Gracias de antemano.

Este es mi código:

cv::vector<cv::Point> allPixels;
    int columnas = img.cols, filas = img.rows;
    cv::Point pt;
    for(int col = 0; col < columnas; col++){
        for(int row = 0; row < filas; row++){

            int val = img.at<uchar>(row,col);

            if(val == 255){
                pt.x = col;
                pt.y = row;

                allPixels.push_back(pt);
            }
        }
    }

    cv::Mat dispImage = img.clone();
    cv::Point2f center;
    float radius;

    cv::minEnclosingCircle(allPixels,center,radius);

    cv::circle(dispImage,center,radius,cv::Scalar(128),1);
    cv::circle(dispImage,center,1,cv::Scalar(128),1);

    cv::imwrite("Enclosing_Result.png",dispImage);

Con 'img' a cv :: Mat con tamaño (760,760) y formato CV_8UC1. El resultado final ("Enclosing_Result.png") es el siguiente:

Y mi objetivo es el siguiente (dibujado):

Respuestas a la pregunta(1)

Su respuesta a la pregunta