Изображения выглядят следующим образом:
изображения
Каждое изображение содержит часть отверстия, вырезанного в образце стекла.
Просматривая изображения глазами, я ясно вижу две области: стекло и отверстие. К сожалению, все методы правильного обнаружения края не привели к хорошим результатам. Основная причина, почему мои попытки не увенчались успехом, я считаю, это недостаточный контраст между стеклом и дыркой. Отверстие не прорезается на всю толщину стекла, поэтому в отверстии остается стеклянное дно, рассеивающее свет обратно в камеру, что ухудшает контраст для меня.
Обработка изображений, которую я'ю я уже пробовал:
- размытие (гауссово, двустороннее)
- повышение резкости
- регулировка контрастности
- фильтрация среднего сдвига
- адаптивное пороговое определение
- обнаружение скрытых границ
- обнаружение границ Собеля
- сегментация водораздела
Съемка изображений с разным временем экспозиции и аналоговым усилением не дала многого, поскольку контрастность оставалась бы одинаковой на протяжении всего времени. измерения.
Есть ли у кого-нибудь идеи, какие шаги я мог бы предпринять, чтобы правильно обнаружить края изображений?
Будь то обработка изображений, программирование или советы о том, как делайте снимки получше, любая идея приветствуется!
Вот отрывок из моего сценария:
Код: Выделить всё
import cv2
image = cv2.imread(
r'path/to/images')
blurred = cv2.GaussianBlur(image, (7, 7), 9)
gray = cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY)
thresh = cv2.adaptiveThreshold(gray, 255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 71, 5)
edges = cv2.Canny(thresh, 100, 200)
contours, _ = cv2.findContours(
edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
output_image = image.copy()
for contour in contours:
cv2.drawContours(output_image, [contour], -1, (0, 255, 0), 2)
cv2.imshow('Circle Edge', cv2.resize(output_image, (1000, 1000)))
cv2.waitKey(0)
cv2.destroyAllWindows()
Заранее спасибо!
уже упоминалось в предыдущем тексте
предпринятые различные шаги по обработке/манипулированию изображениями
Подробнее здесь: https://stackoverflow.com/questions/786 ... ing-python