python实现同态滤波

本文介绍了同态滤波的基本原理,通过将图像f(x,y)转换为照射分量i(x,y)和反射分量r(x,y),并利用对数运算进行分离。接着,通过对图像取傅里叶变换、应用滤波器、反傅里叶变换以及反对数操作,实现了Python中对图像的同态滤波处理。" 129529053,7497527,前端Promise任务队列池的实现,"['JavaScript', '前端框架', 'Promise', '任务调度']
摘要由CSDN通过智能技术生成

同态滤波

对于一幅由物理过程产生的图像f(x,y),可以表示为照射分量i(x,y)和反射分量r(x,y)的乘积。0<i(x,y)<∞,0<r(x,y)<1。i(x,y)描述景物的照明,变化缓慢,处于低频成分。r(x,y)描述景物的细节,变化较快,处于高频成分。

因为该性质是乘性的,所以不能直接使用傅里叶变换对i(x,y)和r(x,y)进行控制,因此可以先对f(x,y)取对数,分离i(x,y)和r(x,y)。令z(x,y) = ln f(x,y) = ln i(x,y) + ln r(x,y)。在这个过程中,由于f(x,y)的取值范围为[0, L-1],为了避免出现ln(0)的情况,故采用ln ( f(x,y) + 1 ) 来计算。

然后取傅里叶变换,得到 Z(u,v) = Fi(u,v) + Fr(u,v)。

然后使用一个滤波器,对Z(u,v)进行滤波,有 S(u,v) = H(u,v) Z(u,v) = H(u,v)Fi(u,v) + H(u,v)Fr(u,v)。

滤波后,进行反傅里叶变换,有 s(x, y) = IDFT( S(u,v) )。

最后,反对数(取指数),得到最后处理后的图像。g(x,y) = exp^(s(x,y)) = i0(x,y)+r0(x,y)。由于我们之前使用ln ( f(x,y)+1),因此此处使用exp^(s(x,y)) - 1。 i0(x,y)和r0(x,y)分别是处理后图像的照射分量和入射分量。

实现代码

import os
import cv2
from PIL import Image
import numpy as np


def homomorphic_filter(src, d0=10, r1=0.5, rh=2, c=4, h=2.0
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值