Изменить яркость в частотной области - PullRequest
0 голосов
/ 23 февраля 2019

Я наверное не понял, как работает частотная область.Для проекта мне нужно изменить яркость изображения с помощью Python и без работы в пространственной области.

В настоящий момент я могу применить некоторые фильтры размытия посредством свертки, как в примере ниже:

 def arithmeticMeanFilter(self, img):

    img = img.convert('RGB')
    open_cv_image = np.array(img)
    red = open_cv_image[:, :, 0]
    green = open_cv_image[:, :, 1]
    blue = open_cv_image[:, :, 2]

    mean_arithmetic = np.ones((9, 9))*(1/81)

    width, height, _ = open_cv_image.shape

    kernel1 = np.zeros((width, height))
    kernel1[:mean_arithmetic.shape[0], :mean_arithmetic.shape[1]] = mean_arithmetic
    kernel1 = np.fft.fft2(kernel1)


    im = np.array(red)
    fim = np.fft.fft2(im)
    Rx = np.real(np.fft.ifft2(kernel1 * fim)).astype(float)

    im = np.array(green)
    fim = np.fft.fft2(im)
    Gx = np.real(np.fft.ifft2(kernel1 * fim)).astype(float)

    im = np.array(blue)
    fim = np.fft.fft2(im)
    Bx = np.real(np.fft.ifft2(kernel1 * fim)).astype(float)

    open_cv_image[:, :, 0] = abs(Rx)
    open_cv_image[:, :, 1] = abs(Gx)
    open_cv_image[:, :, 2] = abs(Bx)

    img = Image.fromarray(open_cv_image)

    return img

Но как я могу изменить яркость, используя эту технику?

1 Ответ

0 голосов
/ 23 февраля 2019

Изменение яркости изображения достигается путем умножения каждого пикселя на постоянную.

Поскольку преобразование Фурье является линейной операцией , умножение на постоянную в пространственной области эквивалентноумножение на одну и ту же постоянную в частотной области.

Линейность функции F определяется как:

aF (x) + bF (y) =F (ax + by)

Из этого уравнения легко показать aF (x) = F (ax) или, как я уже говорил выше, умножение в одной областиэквивалентно умножению на другое.

kmario23 прокомментировал , что умножение в частотной области является сверткой в ​​пространственной области.Это правда.Но поскольку мы имеем дело с константой, все немного проще.В любом случае можно видеть, что постоянная функция в частотной области представляет собой импульсную (или дираковскую) функцию в пространственной области.Свертывание с импульсной функцией - это то же самое, что умножение на константу.

Переход в частотную область для изменения яркости является расточительным, но если вы уже там, вы можете сделать это таким образом.

...