Как удалить текстуру со старых отсканированных фотографий? - Фотопедия
1 голос
/ 21 июля 2014

У меня есть картинка здесь, мне нужно удалить текстуру. Я пробую метод БПФ, но я не получаю алмазы, чтобы затемнить, когда я делаю это, это своего рода плоский Какой лучший способ избавиться от этого?

enter image description here

Ответы [ 2 ]

1 голос
/ 23 июля 2014

Вот моя попытка: я использовал фильтры G'MIC «Удалить горячие точки» и «Сглаживание [Двусторонний]» для достижения очистки.

Cleaned

1 голос
/ 21 июля 2014

Существуют некоторые сложные фильтры, которые реализованы в программном обеспечении, такие как G'MIC плагин GIMP. Вы можете попробовать это онлайн здесь . Я никогда не использовал G'MIC для удаления текстур, и я не устанавливал его на моем нынешнем компьютере, поэтому я не уверен, есть ли у него хороший фильтр, который хорошо работает в этом случае.

Теперь, если какой-то стандартный метод не работает должным образом, вы всегда можете попытаться изучить структуру текстуры, чтобы увидеть, сможет ли какая-нибудь простая математическая формула разобраться с большинством из них. Если это работает достаточно хорошо, то, возможно, после того, как вы обработали изображение самостоятельно, стандартный фильтр будет работать лучше (например, то, что осталось, теперь может иметь четкую периодическую структуру, и вы можете легко удалить это с помощью FFT).

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

Итак, давайте попробуем реализовать это, используя бесплатную программу ImageJ . Мы разделяем изображение на 3 цветовых компонента и применяем следующий макрос для каждого компонента:

m1 = getPixel (x, y + 2); m2 = getPixel (x, y-2); m3 = getPixel (x, y + 3); m4 = getPixel (x, y-3); df = m3-m4; if (df <0) df = -df; ср = (m1 + m2) / 2; ш = V-AV; если (w <0) w = -w; if (df <20) if (w> 15) if (v> 40) v = av

Итак, если df слишком велико, мы, вероятно, близки к краю, и мы не хотим продолжать, если это не так, то если w большое, то это означает, что значение пикселя сильно отличается от среднее значение пикселей на два шага выше и ниже, и если само значение пикселя больше 40, то это очень вероятно из-за наличия текстуры, поэтому мы хотим заменить значение на это среднее значение. Результат будет следующим:

Result

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

...