Цель: найти белое пятно с самой большой площадью. И если возможно, то подтвердите, если это круг. Затем найдите средний центр этого патча и радиус.
Я думал о создании края вокруг изображений, но я не знаю, как это помогло бы узнать площадь участков.
Я пытаюсь достичь этого, и если кто-то может направить меня в правильном направлении, я был бы очень признателен.
В настоящее время я использую библиотеку php.gd, и это единственный инструмент, который у меня есть.
Спасибо
Обнаружение краев на изображениях на самом деле довольно просто. Наиболее стандартным способом является использование свертка изображения операция и выбор правильного ядра, чтобы охватить ваш образ. Есть функция в php.gd
называется imageconvolution
где вы можете указать входное изображение, ядро свертки, делитель и смещение. Делитель просто делит все значения в ядре на это значение, а смещение добавляет значение к каждому значению в ядре. Таким образом, предполагая, что ваше изображение загружается в массив $im
, вы бы сделали это:
$edgeMatrix = array(-1,-1,-1,-1,8,-1,-1,-1,-1);
$divisor = 0;
$offset = 0;
imageconvolution($im, $edgeMatrix, $divisor, $offset);
Обратите внимание, что imageconvolution
мутирует исходное входное изображение, поэтому $im
будет содержать результат обнаружения края. Убедитесь, что у вас есть копия оригинального изображения где-то на случай, если вам это нужно.
$edgeMatrix = array(-1,-1,-1,-1,8,-1,-1,-1,-1);
это стандарт Матрица лапласовой свертки и используется довольно часто для задач обнаружения краев.
Тем не менее, есть функция под названием imagefilter
где есть флаг обнаружения края — IMG_FILTER_EDGEDETECT
, Эта функция фильтрует изображение с учетом одного из нескольких параметров, и обнаружение края является одним из этих параметров. Таким образом, вы бы сделали это:
imagefilter($im, IMG_FILTER_EDGEDETECT);
Как с imageconvolution
, imagefilter
также изменяет входное изображение, поэтому снова убедитесь, что вы сохраняете оригинальное изображение где-нибудь, если вам это нужно.
Надеюсь, один из них будет работать для вас!
Других решений пока нет …