Статья:

РАЗРАБОТКА АЛГОРИТМА ДЛЯ ИЗМЕРЕНИЯ ДИАМЕТРА ПЯТНА КОНТАКТА НА ИЗОБРАЖЕНИЯХ

Конференция: LXXXIV Международная научно-практическая конференция «Научный форум: инновационная наука»

Секция: Технические науки

Выходные данные
Ульмасов А.С., Мастеренко Д.А. РАЗРАБОТКА АЛГОРИТМА ДЛЯ ИЗМЕРЕНИЯ ДИАМЕТРА ПЯТНА КОНТАКТА НА ИЗОБРАЖЕНИЯХ // Научный форум: Инновационная наука: сб. ст. по материалам LXXXIV междунар. науч.-практ. конф. — № 5(84). — М., Изд. «МЦНО», 2025.
Конференция завершена
Мне нравится
на печатьскачать .pdfподелиться

РАЗРАБОТКА АЛГОРИТМА ДЛЯ ИЗМЕРЕНИЯ ДИАМЕТРА ПЯТНА КОНТАКТА НА ИЗОБРАЖЕНИЯХ

Ульмасов Азизжон Санджар угли
аспирант, ФГБОУ ВО МГТУ «СТАНКИН», РФ, г. Москва
Мастеренко Дмитрий Александрович
д-р техн. наук, профессор, ФГБОУ ВО МГТУ «СТАНКИН», РФ, г. Москва

 

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

 

Ключевые слова: контактные деформации; пятно контакта; обработка изображений; адаптивный алгоритм; пороговая бинаризация; opencv.

 

Контактные методы измерений остаются важным инструментом в метрологии благодаря их простоте, доступности и надежности [1]. Они широко применяются в задачах контроля геометрических параметров деталей, координатной метрологии и активного мониторинга размеров изделий в производственных процессах [4]. Однако точность таких измерений существенно ограничивается погрешностями, вызванными контактными деформациями, возникающими при взаимодействии измерительного наконечника с поверхностью объекта [2]. Эти деформации, обусловленные упругими и пластическими свойствами материалов, а также величиной измерительного усилия, могут достигать нескольких микрометров, что недопустимо для высокоточных задач, таких как контроль резьбовых параметров или интерференционных соединений [5].

Для повышения точности контактных измерений необходимо количественно оценить контактные деформации, что требует измерения размеров зоны контакта, или пятна контакта [3]. В данной работе представлена экспериментальная установка, использующая оптически прозрачный стеклянный наконечник и видеокамеру для визуализации пятна контакта. Однако получаемые изображения характеризуются размытостью границ из-за оптических искажений, неоднородного освещения и микрогеометрии поверхности, что затрудняет определение диаметра пятна контакта. Для решения этой проблемы разработан адаптивный алгоритм обработки изображений, позволяющий определять диаметр пятна контакта с учетом нечеткости и неоднородности освещения. Настоящая статья посвящена описанию этого алгоритма, его математической основы, программной реализации и результатов экспериментальных исследований.

Средства контактных измерений, такие как измерительные головки координатно-измерительных машин, щупы активного контроля размеров и приборы для контроля резьбовых параметров, взаимодействуют с поверхностью изделия посредством жестких или упругих наконечников [8]. Эти наконечники, выполненные из твердых материалов (например, искусственного корунда или твердых сплавов), создают локальную зону контакта, где возникают упругие и пластические деформации [6]. Величина этих деформаций зависит от измерительного усилия, радиуса наконечника, а также механических свойств материалов контактирующих поверхностей [7]. Для коррекции погрешностей, вызванных контактными деформациями, необходимо точно измерить размеры пятна контакта, что требует применения оптических методов и специализированных алгоритмов обработки изображений [9].

Разработанная экспериментальная установка, использующая стеклянный сферический наконечник и видеокамеру, позволяет визуализировать зону контакта. Однако получаемые изображения характеризуются размытостью границ из-за оптических искажений, неоднородного освещения и микрогеометрии поверхности, что затрудняет определение диаметра пятна контакта. Для решения этой проблемы был разработан алгоритм обработки изображений, реализованный на языке Python с использованием библиотеки OpenCV. Алгоритм обеспечивает выделение пятна контакта, определение его границ и вычисление диаметра с учетом адаптивных пороговых значений, что позволяет компенсировать нечеткость изображений. Далее описывается методика обработки изображений, включая математическую основу и программную реализацию.

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

где  – интенсивности красного, зеленого и синего каналов соответственно. Далее изображение бинаризуется с использованием порогового метода. Интенсивность пикселя  сравнивается с пороговым значением , задаваемым пользователем (в экспериментах ). Бинарное изображение формируется по правилу:

Инверсия (параметр ) обеспечивает выделение пятна контакта как белой области () на черном фоне (), что соответствует яркой зоне контакта на изображении. Возможность настройки порогового значения  позволяет адаптировать алгоритм к различным условиям освещения и контрастности изображения.

def process_image(image_data, threshold_value=127, invert=False):

    img_data = base64.b64decode(image_data)

    img = cv2.imdecode(np.frombuffer(img_data, np.uint8), cv2.IMREAD_COLOR)

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    if invert:

        _, binary = cv2.threshold(gray, threshold_value, 255, cv2.THRESH_BINARY_INV)

    else:

        _, binary = cv2.threshold(gray, threshold_value, 255, cv2.THRESH_BINARY)

    return img, binary

Для идентификации пятна контакта применяется алгоритм заливки (), который обходит связанные белые пиксели со значением . Начиная с начального пикселя , алгоритм проверяет условие  и добавляет соседние пиксели  в стек для обработки. Используется 4-связность, что означает рассмотрение только горизонтальных и вертикальных соседей. Результатом является множество , представляющее связную область, соответствующую пятну контакта. Формально множество  определяется как:

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

 

def flood_fill(image, start_x, start_y, target_color=255):

    if image[start_y, start_x] != target_color:

        return set()

    height, width = image.shape

    stack = [(start_x, start_y)]

    visited = set()

    while stack:

        x, y = stack.pop()

        if (x, y) in visited or x < 0 | x >= width or y < 0 or y >= height:

            continue

        if image[y, x] != target_color:

            continue

        visited.add((x, y))

        stack.extend([(x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)])

    return visited

После выделения пятна контакта вычисляются его геометрические характеристики. Для множества пикселей  определяются границы области .

Диаметр пятна контакта определяется как максимальное расстояние по горизонтали или вертикали:

Центр пятна вычисляется как среднее значение координат границ:

Для исключения шумов и артефактов, таких как мелкие пятна или случайные области, диаметр фильтруется по заданным пределам  где в экспериментах  пикселей,  пикселей. Радиус пятна определяется как . Этот подход позволяет надежно выделять пятно контакта, игнорируя посторонние объекты на изображении.

 

def find_shapes(binary_image, min_diameter, max_diameter):

    height, width = binary_image.shape

    visited = set()

    shapes = []

    for y in range(height):

        for x in range(width):

            if binary_image[y, x] == 255 and (x, y) not in visited:

                circle_pixels = flood_fill(binary_image, x, y)

                if circle_pixels:

                    visited.update(circle_pixels)

                    min_x = min(x for x, y in circle_pixels)

                    max_x = max(x for x, y in circle_pixels)

                    min_y = min(y for x, y in circle_pixels)

                    max_y = max(y for x, y in circle_pixels)

                    diameter = max(max_x - min_x, max_y - min_y)

                    center_x = (min_x + max_x) // 2

                    center_y = (min_y + max_y) // 2

                    if min_diameter <= diameter <= max_diameter:

                        shapes.append((diameter, (center_x, center_y)))

    return shapes

Результаты обработки визуализируются путем нанесения окружности с центром  и радиусом  на исходное изображение. Уравнение окружности задается как:

Окружность отрисовывается зеленым цветом, а центр отмечается красной точкой. Кроме того, бинарное изображение отображается для контроля качества выделения пятна контакта. Этот этап позволяет оператору визуально оценить корректность работы алгоритма и при необходимости скорректировать пороговое значение  или другие параметры.

shapes = find_shapes(binary_image, MIN_DIAMETER, MAX_DIAMETER)

for i, (diameter, (center_x, center_y)) in enumerate(shapes, 1):

    print(f"Фигура {i}: Диаметр = {diameter} пикселей, Центр = ({center_x}, {center_y})")

    radius = diameter // 2

    cv2.circle(original_image, (center_x, center_y), radius, (0, 255, 0), 2)

    cv2.circle(original_image, (center_x, center_y), 2, (0, 0, 255), 3)

display_image(original_image, "Image with Detected Circles")

display_image(binary_image, "Binary Image with Shapes")

 

Рисунок 1. Результаты обработки изображений

 

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

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

 

Список литературы:
1. Гапшис А.А., Каспарайтис А.Ю., Модестов М.Б. и др. Координатные измерительные машины и их применение. М.: Машиностроение, 1988. 328 с.
2. Крагельский И.В. Трение, изнашивание и смазка: В 2 томах / под ред. И.В. Крагельского. М.: Машиностроение, 1978.
3. Леун А.В., Шаханов А.А., Никель А.В. Возможности повышения точности контактных измерений при использовании корундовых наконечников и видеорегистрации изображения области контакта // Омский научный вестник. 2019. №2 (164). с. 68-75.
4. Марков Н.Н. Погрешность и выбор средств при линейных измерениях / под ред. Н.Н. Маркова. М.: Машиностроение, 1967.
5. Николаева А.В. Повышение точности и производительности резьбошлифования на основе разработанных методов и средств для измерения параметров наружных резьб: дис. канд. техн. наук. Омск, 2006.
6. Писаренко Г.С. Справочник по сопротивлению материалов / под ред. Г.С. Писаренко. Киев: Наукова думка, 1988.
7. Решетов Д.Н. Детали и машины металлорежущих станков: В 2 томах / под ред. Д.Н. Решетова. М.: Машиностроение, 1972.
8. Штанько А.Е., Иванова С.Д. Оптико-электронные измерительные системы. М.: СТАНКИН, 2013. 233 с.
9. Якушенков Ю.Г. Теория и расчет оптико-электронных приборов. М.: Машиностроение, 1999. 360 с.