2015-03-24 6 views
1

Я пытаюсь повторить следующее сглаживание изображения с помощью гауссовского фильтра (изображений из журнала): enter image description hereприменить гауссово размытие изображения Ussing питона

В статье говорится, что для того, чтобы получить от левое изображение на правильное изображение. Я должен применить гауссовский паттерн со значениями x, y = 1, ..., 100 и sigma = 14 для получения «наилучших результатов»

Я разработал следующую программу на языке python: попытайтесь добиться этого сглаживания:

import scipy.ndimage as ndimage 
import matplotlib.pyplot as plt 

img = ndimage.imread('left2.png') 
img = ndimage.gaussian_filter(img, sigma=(14), order=0) 
plt.imshow(img) 
plt.show() 

по какой-то причине полученный результат не похож на изображение справа. Может ли кто-нибудь указать, что мне нужно изменить в программе, чтобы перейти от левого изображения к нужному изображению?

спасибо.

+0

Правое изображение не похоже на сиг = 14pix размытие слева. Возможно, авторы описали их метод неточно. – mdurant

+0

Да, это может быть правильно, но в любом случае я хотел бы знать, что они сделали, чтобы получить правильный образ. – user3025898

ответ

2

Я собираюсь сделать предположение здесь:

Поскольку они упоминают, что их х и у значения в диапазоне от 0-100, они, вероятно, применяющих «сигмы = 14 блока размытости» вместо a "sigma = 14 pixel blur".

Параметр sigma в scipy.ndimage.gaussian_filter в единицах измерения. Если я правильно о намерении автора, вам необходимо масштабировать параметр сигмы вы передаете в.

Если авторы уточнили, что как x и y варьировались от 0-100, сигма в направлениях х и у будут отличаться, так как ваши входные данные появляются с другим числом строк, чем столбцы (т. е. это не идеально квадратное изображение).

Возможно, попробуйте что-то похожее на это?

nrows, ncols = img.shape 
sigma = (14 * nrows/100.0, 14 * ncols/100.0) 
img = ndimage.gaussian_filter(img, sigma=sigma) 
+0

Привет, Джо, Спасибо за ваш ответ. В соответствии с вашим кодом существует только два значения сигмы для 14 * nrows/100 (ось x) и 14 * ncols/100.0 (ось y), как изменяются значения (от 1 до 100) в соответствии с вашим кодом? Я побежал следующий код 'IMG = ndimage.imread ('left2.png') печать img.shape Nrows = img.shape [0] печати Nrows Ncols = img.shape [1] печати Ncols сигма = (14 * nrows/100.0, 14 * ncols/100.0) img = ndimage.gaussian_filter (img, sigma = sigma) plt.imshow (img) plt.show() 'вы можете найти изображение в https: // www.dropbox.com/s/dpur6xuzqh1xlur/left2.png?dl=0 – user3025898

+0

При выполнении предыдущего кода я получил следующую проблему: RuntimeError: аргумент sequence должен иметь длину, равную входному рангу – user3025898

Смежные вопросы