У меня есть такие изображения (мне нужно, чтобы изображение было монохромным), и я пытаюсь полностью удалить фон и выделить (было бы лучше, если бы в результате изображение было двоичным) металлические объекты на изображениях и делать это достаточно последовательно, я попытался сделать следующий путь:
размытие по Гауссу -> фильтрация отсу -> использование таких операций, как эрозия, для удаления фонового шума, но конечный результат выглядит примерно так, как на последней картинке, и мой вопрос: какой метод я могу использовать, чтобы лучше подготовить фотографии или удалить такое количество шума?




Текущее состояние функции, которую я использовал:
import cv2
import numpy as np
def process_image(input_path, output_path,
blur_kernel=(5, 5),
erosion_kernel_size=3):
img = cv2.imread(input_path, cv2.IMREAD_GRAYSCALE)
blurred = cv2.GaussianBlur(img, blur_kernel, 0)
_, otsu = cv2.threshold(blurred, 0, 255,
cv2.THRESH_BINARY + cv2.THRESH_OTSU)
kernel = np.ones((erosion_kernel_size, erosion_kernel_size), np.uint8)
eroded = cv2.erode(otsu, kernel, iterations=5)
cv2.imwrite(output_path, eroded)
process_image("PXL_20260108_121315716.jpg", "result.png")
Подробнее здесь: https://stackoverflow.com/questions/798 ... ing-opencv
Мобильная версия