python实现同态滤波
同态滤波
对于一幅由物理过程产生的图像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 npdef homomorphic_filter(src, d0=10, r1=0.5, rh=2, c=4, h=2.0, l=0.5):gray = src.copy()if len(src.shape) > 2:gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)gray = np.float64(gray) rows, cols = gray.shapegray_fft = np.fft.fft2(gray)gray_fftshift = np.fft.fftshift(gray_fft)dst_fftshift = np.zeros_like(gray_fftshift)M, N = np.meshgrid(np.arange(-cols // 2, cols // 2), np.arange(-rows//2, rows//2))D = np.sqrt(M ** 2 + N ** 2)Z = (rh - r1) * (1 - np.exp(-c * (D ** 2 / d0 ** 2))) + r1dst_fftshift = Z * gray_fftshiftdst_fftshift = (h - l) * dst_fftshift + ldst_ifftshift = np.fft.ifftshift(dst_fftshift)dst_ifft = np.fft.ifft2(dst_ifftshift)dst = np.real(dst_ifft)dst = np.uint8(np.clip(dst, 0, 255))return dstpath = "img.bmp"
if os.path.isfile(path):print("path {} is existence;".format(path))img = Image.open(path)Img = img.convert('L')img = np.array(img)print(img, img.shape)
img_new = homomorphic_filter(img)
print("new img shape is {}".format(img_new.shape))
cv2.imwrite("2.png", img_new)
python实现同态滤波相关推荐
- 数字图像处理杂项-同态滤波
内容简介 同态滤波原理 同态滤波python实现 同态滤波调参技巧 同态滤波原理 这里先看讲义介绍如下: 首先上面的分析一共有三点需要注意: 取对数,目的是基于我们假定的图像模型将低频和高频信号进行分 ...
- MATLAB图像处理_同态滤波1
原 MATLAB图像处理_同态滤波 2015年01月20日 09:54:25 风雨也无晴 阅读数:14234 <span class="tags-box artic-tag-box&q ...
- [Python图像处理] 使用高通滤波器实现同态滤波
使用高通滤波器实现同态滤波 同态滤波基础 实现同态滤波 相关链接 同态滤波基础 同态滤波是一种去除图像中乘性噪声的技术,常用于校正图像中的不均匀照明.根据图像形成的光照反射模型,图像 f(x,y)f( ...
- 同态滤波 python_使用python差异隐私和同态的各种数据隐私保护方法
同态滤波 python Matt Canute, Young-Min Kim, Donggu Lee, Suraj Swaroop, Adriena Wong Matt Canute,Kim Youn ...
- 图像增强之同态滤波python实现——20221204工作总结
目录 参考 同态滤波python实现 代码 效果 参考 [1]https://wenku.baidu.com/view/4eb598180a12a21614791711cc7931b765ce7ba9 ...
- python中matlab函数图像处理,MATLAB图像处理--同态滤波(代码及示例)
一幅图像f(x,y)能够用它的入射光分量和反射光分量来表示,其关系式如下 f(x,y)=i(x,y)r(x,y) 图像f(x,y)是由光源产生的照度场i(x,y)和目标的反射系数场r(x,y)的共同作 ...
- 传统图像增强算法python实现
本文参照:图像增强综述 - FANG_YANG - 博客园 (cnblogs.com)对传统图像增强方法做了总结,并把相关代码由matlab转成了python. 1. 像素级方法 1.1图像反转 图像 ...
- Python+OpenCV图像处理(一篇全)
参考:1.网易云课堂 Python+OpenCV图像处理 - 网易云课堂 2.[在水一方xym的博客]业精于勤荒于嬉,行成于思毁于随 - CSDN博客 https://blog.csdn.net/za ...
- OpenCV —— 频率域滤波(傅里叶变换,低通和高通滤波,带通和带阻滤波,同态滤波)
频率域滤波 基本概念 傅里叶变换 二维离散的傅里叶变换 快速傅里叶变换 傅里叶幅度谱与相位谱 谱残差显著性检测 卷积与傅里叶变换的 频率域滤波 低通滤波和高通滤波 带通和带阻滤波 同态滤波 基本概念 ...
- 数字图像处理与Python实现
1.数字图像处理基础知识 1.1数字图像简介 目的 提升图像的视觉感知质量 提取图像中感兴趣区域或特征 方便图像的存储和运输 特点 可再现能力强 处理精度高 适用范围广 灵活性高 方法 图像变换 图像 ...
最新文章
- linux目录怎么自动生成,情景linux--如何快速生成大文件?
- HBase基础和伪分布式安装配置
- 如何在 Windows 上安装 Python | Linux 中国
- c语言const限制什么,[C语言]类型限定词const解析
- Android 更加开放了!
- ios 仿微信,短信聊天气泡
- pythonmain是什么_Python - __name__=='__main__'是干啥的,以及python -m与python的区别
- Improving Transferability of Adversarial Examples with Input Diversity论文解读
- Dijkstra算法C++实现
- filter()“筛选”函数
- [纯理论] FCOS
- ARM来中关村“卖艺”,地平线机器人科技拜码头
- vb如何调用计算机日历,跪求vb.net简易日历制作的源代码
- 软件工作量评估方法(一)
- 彻底删除aws亚马逊服务器使之不再计费
- 微软输入法半角全角切换
- 软件实现串口程序出售,9600收发毫无压力。 采用io管脚模拟,适合串口资源欠缺的芯片使用。 stm32,tms320f28xx,PIC等
- html正则表达式怎么写用户名非空,js通过正则匹配没有内容的空标签
- VS2005的R6034错误 (转载)
- 计量经济学学习笔记:多重共线性、异方差、自相关