0

Я хочу совместить симметрию контуров объектов. Я попытался использовать matchShape(), computeDistance(), Humoments() из библиотеки opencv 3.0. Но никто из них не близок к тому, что я хочу.Определить мелкие дефекты в контуре объектов

Ниже приведены изображения, над которыми я работаю.

Good Shape-1

Defected

Я ожидаю, чтобы получить наибольшее значение Dis-симметрии для образа-2 (названный Дефект)

ответ

0

Вы можете сделать это самостоятельно, используя несколько простых инструментов:

  1. Найти центроид
  2. Использовать PCA (http://docs.opencv.org/master/d1/dee/tutorial_introduction_to_pca.html#gsc.tab=0)), чтобы найти основную ось
  3. Поверните фигуру так, чтобы главная ось указывала вверх
  4. В каждой строке подсчитывайте количество пикселей по обе стороны от центра и сравнивайте (должна быть одна центральная координата, возможно, используя медианное значение всех центров рядов)

Вы можете настроить собственные пороги, чтобы они соответствовали этой проблеме.

+0

Я реализовал, как вам было предложено, но я столкнулся с некоторыми проблемами с этим решением: 1) Я ищу обобщенную симметрию формы, то есть форма объекта может быть круглой, квадратной, треугольной, подобной рыбе и т. Д. поскольку вращающийся объект по главной оси неверен. 2) Также для изображений, которые я дал в своем первом сообщении, если объект сломан/отклонен больше наклонным, чем перемещение влево и вправо, а сравнение расстояния от центрального столбца даст ложную ошибку симметрии. –

+0

1. Ответ был основан на примерах, приведенных в вопросе. Если вы укажете больше примеров, возможно, есть обобщение. 2. Я не уверен, что буду следовать. Если дефект не будет одинаковым с обеих сторон, он должен работать. – Photon

+0

вы можете загрузить изображения из ссылки:! [Image Set] (http://imgur.com/a/Hi6TL) –