Быстрая сегментация изображений занимает очень мало времени традиционные алгоритмы сегментации

Быстрая сегментация изображений занимает меньше времени, чем традиционные алгоритмы сегментации</trp-post-container

514KBZIP

matlab должны найти экстремальное значение функции findpeak может найти только одномерный экстремальное значение, и opencv не имеет соответствующей функции, так называемый экстремальное значение больше, чем окружающие значения, а затем посмотреть, какая степень спроса на экстремальное значение: для адгезии цели, я использую этот метод экстремального значения, чтобы узнать экстремальное значение, а затем + водораздел сегментации, эффект лучше, чем методы сегментации, которые я пробовал раньше, но и простой и трудоемкий меньше.

Mat dist_image, eachpeaks, peaksshow.

distanceTransform(bwimg,dist_image, DIST_L2, 3);



вектор<Пункт> пики.

findPeaks(dist_image,lengthresh,peaks,eachpeaks).



Mat imglabels,segresult.

watershedSegmentProc(bwimg,eachpeaks,peaksshow,imglabels,segresult);

Любые точки центральной области, найденные таким образом, являются более точными, и при разбиении водораздела меньше пересегментации.

Однако этот подход следует оптимизировать, так как найденные таким образом полюса не дружат с одной большой задачей, в которой будет найдено несколько полюсов. Что касается оптимизированного кода, то я не буду его публиковать (для внутреннего пользования компании).

Одна загвоздка: при отладке сегодня выяснилось, что в результатах водораздела все еще остаются неприсвоенными неизвестные области:

Удивительно, что здесь есть значения в области 0-неизвестно, очевидно, это результат после создания водораздела:

/* Обработка деления водораздела

* srcmatbw-------- двоичная карта Одноканальный

* everycenters---- карта центра делимых камней с черным 0 на фоне и белой точкой 255 в центре

* imglabels------- результат водораздела фон 100, разделительная линия -1, делимые камни 1~N (может быть 0 уже допустимо)

* */

int watershedSegmentProc(Mat &srcmatbw,Mat &everycenters,Mat &imglabels)

{

// int not_zero_count=countNonZero(srcmatbw);

// float white_count_thre=srcmatbw.rows*srcmatbw.cols;

// white_count_thre*=0.8;

// if((not_zero_count(int)white_count_thre))

//	{

// возврат 2;

//	}

 

	Mat element = getStructuringElement(MORPH_ELLIPSE, Size(11, 11));

Mat element2 = getStructuringElement(MORPH_ELLIPSE, Size(3, 3));



Mat binary_dilate.//каждый центр

	dilate(everycenters, binary_dilate, element2, Point(-1, -1), 1);



Mat binary_8UC3.

vector resultmats.

resultmats.push_back(srcmatbw);

resultmats.push_back(srcmatbw); resultmats.push_back(srcmatbw).

resultmats.push_back(srcmatbw); resultmats.push_back(srcmatbw).

merge(resultmats,binary_8UC3);



Мат неизвестен.//Получите неизвестную площадь, т.е. площадь, участвующую в демаркации разделительной линии.

	bitwise_xor(srcmatbw,binary_dilate,unknown).

 

	//Слияние изображений маркеров

	Mat imgstats, imgcentroid.

connectedComponentsWithStats(binary_dilate, imglabels, imgstats, imgcentroid);  //Маркеры поля подключений

 

	imglabels.convertTo(imglabels, CV_32SC1); // Преобразование типа изображения

 

	imglabels = imglabels + 100;//Область фона равна 100 пикселям

 

	для (int i=0;i<unknown.rows;i++)

{

uchar* ptr = unknown.ptr(i);

		для (int j=0;j<unknown.cols;j++)

{

			если (255==ptr[j])

{

imglabels.at(i, j) = 0; // Пиксели неизвестной области равны 0

			}

		}

	}

 

	// Сегментация водосбора

	watershed(binary_8UC3, imglabels).

}

Что происходит с этим 0, я не знаю?

/**********************************************************************/

Что касается opencv 4.1, вызывающего модели .pb, обученные tensorflow, с узлами DropOut или BatchNorm, то новый коллега сказал, что opencv c++ не поддерживает это, я проверил:

Экспорт графа tensorflow с batchnorm в opencv dnn - Форум OpenCV Вопросы и ответы

OpenCV: modules/dnn/src/tensorflow/tf_importer.cpp | Fossies

dnn: Неизвестный тип слоя Shape в op dropout/Shape в функции populateNet - Проблема #9563 - opencv/opencv - GitHub

Как загрузить сборку модели Keras с бэкендом tensorflow в OpenCV - Форум OpenCV Q&A

Tensorflow C++ от обучения до развертывания (3): обучение и развертывание CNN с помощью Keras - Tech Liu

C++ и узел phase_train - Выпуск #357 - davidsandberg/facenet - GitHub

Проверил исходный код opencv4.1, вижу написан ли интерфейс fushBatchNorm, если не поддерживается, то opencv зачем писать этот интерфейс, не куриные же ребрышки:

Видите, он распознает этот узел. Я думаю, что это просто должно быть так, как указано в opencv c++, прежде чем загружать обученную модель под python.

Что касается узла выпадения, я не вижу его в исходном коде opencv на данный момент, но я видел решения, о которых говорили в Интернете:

А другой парень даже написал код для обучения модели с выпадающими узлами под python и последующим вызовом opencv c++.

Так что я не думаю, что они не поддерживаются, просто opencv c++ немного строже, чем в python, и он будет загружаться по своим правилам, мы просто еще не разобрались с ними.

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

Надеюсь, у меня будет время реализовать его для другого проекта. Ниже приведен результат диссертации: я чувствую, что он лучше работает для диаграмм с большим количеством перекрытий и расфокусированных диаграмм!

Скачать ресурсЦена загрузки этого ресурса составляет56.0Золотые монеты, пожалуйста, сначала
Скачать ресурс

Заявление о ресурсах (покупка считается согласием с этим заявлением):
1. любая операция в веб-платформе считается прочитал и согласился с нижней части сайта регистрационное соглашение и отказ от ответственности, этот сайт ресурсы были ультра-низкая цена, и не предоставляет техническую поддержку
2. некоторые пользователи сети поделиться сетевой адрес диска может быть недействительным, таких как возникновение сбоев, пожалуйста, отправьте письмо в службу поддержки код711cn#qq.com (замените # на @) будет составлен, чтобы отправить
3. этот сайт предоставляет все загружаемые ресурсы (программное обеспечение и т.д.) сайт, чтобы гарантировать, что никаких негативных изменений; но этот сайт не может гарантировать точность, безопасность и целостность ресурсов, пользователь загружает по своему усмотрению, мы общаемся, чтобы узнать для целей не все исходный код не 100% безошибочно или нет ошибок; вы должны иметь определенную основу, чтобы быть в состоянии читать и понимать код, чтобы быть в состоянии изменить отладку! код и устранять ошибки. В то же время, пользователи данного сайта должны понимать, что Source Code Convenience Store не владеет никакими правами на программное обеспечение, предоставленное для скачивания, авторские права принадлежат законному владельцу ресурса.
4. все ресурсы на этом сайте только для обучения и исследовательских целей, пожалуйста, должны быть удалены в течение 24 часов после загрузки ресурсов, не используйте в коммерческих целях, в противном случае юридические споры, возникающие с сайта и издателя залога ответственности сайта и не будет нести!
5. в связи с воспроизводимым характером ресурсов, приобретенные ресурсы не подлежат возврату, баланс пополнения также не подлежит возврату

充值送金币,用余额购买,低至6.7折!Пополните счет прямо сейчас

Показать капчу
У вас нет аккаунта? зачисление  Забыли пароль?