Глядя на эту статью, метод описывается следующим образом:
После того, как пользователь
выбирает неизвестную область, алгоритм сначала перемещается
по краям от известных областей к неизвестным
областям и автоматически переносит информацию в
область зарисовки. Алгоритм использует
изофоты (линия на диаграмме, соединяющая точки,
где интенсивность света или яркость одинакова). Заполнение
выполнено таким образом, что линии изофот, приходящие на
границу неизвестной области, завершаются внутри,
что позволяет плавно продолжать информацию
к центру неизвестного региона.
Чтобы легко воспроизвести артефакты, я создал изображение, состоящее из массива повернутых кругов градиента и повернутой полосы маскировки, как показано ниже:< /p>


Затем я вычислил результат закрашивания, используя следующий код:
import numpy as np
import cv2 as cv2
image = cv2.imread('testing_array.png', cv2.IMREAD_GRAYSCALE)
mask = cv2.imread('testing_mask.png', cv2.IMREAD_GRAYSCALE)
dst = cv2.inpaint(image,mask,2,cv2.INPAINT_NS)
cv2.imwrite("testing_output.png",dst)
< /code>
Как мы видим ниже, результат удивителен: качество результата великолепно, когда градиенты вертикальны, но очень быстро терпит неудачу, когда это не так. При чтении описания кажется, что метод должен иметь возможность обрабатывать градиенты, которые не являются строго вертикальными. .net/exo3njzp.png "/>
Мне интересно, является ли это ожидаемым результатом метода, или я должен копаться для проблемы реализации. версия: < /p>
python: 3.13.1 < /li>
opencv: 4.11.9 < /li >
< /ul>
Подробнее здесь: https://stackoverflow.com/questions/793 ... -artefacts