Как обнаружить блеск на поверхности OpenCV - PullRequest
0 голосов
/ 27 мая 2020

пожалуйста, помогите мне с этим, поскольку я новичок в обработке изображений. У меня следующие изображения, есть блестки / пудра на поверхности руки. Как мне go обнаружить эти вещи на руке?

Я попытался выполнить обнаружение, получив 70% максимальной интенсивности изображения. Однако только изображение работает, а остальные нет. Может ли кто-нибудь предложить какие-либо методы, которые я могу использовать для обнаружения, пожалуйста. (Любые доступные коды, которые можно попробовать, будут хорошими) Спасибо?

Входное изображение 1: единственное изображение, которое работает с приведенным выше кодом

Input Image 1: The only image that works with the above code

Входное изображение 2

Input Image 2

Входное изображение 3

Input Image 3

Желаемый результат

Desire Outcome

   //convert from bitmap to mat
    Mat mat = new Mat(bitmap1.getWidth(), bitmap1.getHeight(), CvType.CV_8UC3);
    Utils.bitmapToMat(bitmap1, mat);

    Mat grayMat = new Mat();
    Imgproc.cvtColor(mat, grayMat, Imgproc.COLOR_BGR2GRAY);

    //Log.d("TAGG","intensity" + mat.dump());

    int rows = mat.rows();
    int cols = mat.cols();
    double maxIntensity = Core.minMaxLoc(grayMat).maxVal;
    double minIntensity = 0.7 * maxIntensity;
    Log.d("TAGG", "intensity" + maxIntensity);

    Mat thresholdMat = new Mat();
    Imgproc.threshold(grayMat, thresholdMat, minIntensity, maxIntensity, Imgproc.THRESH_BINARY_INV);

    Bitmap outputBitmap = Bitmap.createBitmap(thresholdMat.cols(), thresholdMat.rows(), Bitmap.Config.ARGB_8888);
    Utils.matToBitmap(thresholdMat, outputBitmap);
...