图像增强之同态滤波python实现——20221204工作总结

2023-11-08

参考

[1]https://wenku.baidu.com/view/4eb598180a12a21614791711cc7931b765ce7ba9.html?wkts=1670054222364&bdQuery=%E5%90%8C%E6%80%81%E6%BB%A4%E6%B3%A2python%E5%AE%9E%E7%8E%B0

同态滤波python实现

代码

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

def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


def homomorphic_filter(src,d0=10,r1=0.5,rh=2,c=4,h=2.0,l=0.5):
    gray = src
    if len(src.shape)>2:
        gray = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
    gray = np.float64(gray)
    rows,cols = gray.shape
    gray_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)))+r1
    dst_fftshift = Z*gray_fftshift
    dst_fftshift = (h-l)*dst_fftshift+l
    dst_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 dst

imageDir = "./img/"
saveDir = "./HomoFilter_results/"

for name in os.listdir(imageDir):
    img = Image.open(os.path.join(imageDir, name))
    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))
    #cv_show('1',img_new)
    cv2.imwrite(os.path.join(saveDir, name),img_new)

效果

上原图,下增强
在这里插入图片描述
针对微小的砂眼缺陷,有一定的增强效果
左原图,右增强
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像增强之同态滤波python实现——20221204工作总结 的相关文章

随机推荐

  • Java中间件(1)--分布式系统&中间件从入门到精通(五)

    上篇文章说了 当业务数据量大的时候 可以考虑业务和数据分离 当还解决不了的时候 可以考虑把数据库读写分离 缓存 还可以考虑把表垂直拆分 水平拆分 大型网站架构 2 分布式系统 中间件从入门到精通 四 中间件为软件应用提供了操作系统所提供的服
  • OpenStack2

    OpenStack2 1 DashBoard 2 私有网络 构建完整云主机 3 块存储服务 1 DashBoard 安装软件包 编辑配置文件 重启服务 网页成功访问使用网页 创建网络 换到 admin用户 切换到demo用户 创建云主机 创
  • Visual Studio 2010 部署QT4.8.4

    做GUI界面的设计时 目前已不再拘泥于VS的MFC框架 有很多开源的工具 本例以QT与VS2010的整合为例 演示环境搭建 后续将会用QT做VT的开发工作 第一步 下载QT和QT与VS的插件 在VS2010下以及结合VTK的情况 网络上经网
  • 让 Home 页面离开的时候保持原来的状态

    思路 1 用 keep alive 让页面不要销毁
  • 对有验证码的后台网页进行爆破-captcha-killer-modified

    对有验证码的后台网页进行爆破 captcha killer modified 实例 以pikachu靶场为目标 攻击目标url http xxxx pikachu master vul burteforce bf server php xx
  • PAT B1072 开学寄语

    算法思想 用数组标记应要查缴的物品mark 物品编号 1 在输入学生信息的同时判断该物品是否要查缴 因格式问题用了另一个数组保存该学生要查缴的物品编码 最后再输出该学生的名字和查缴物品编号 后来看了柳神的代码 不用这么麻烦 直接在输出前加括
  • HDU2085核反应堆

    Time Limit 1000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 22891 Accepted Submission
  • PID控制原理说明与图解

    PID是比例 积分 微分的简称 一般常用于温度 速度等标量的控制 应用PID控制的系统存在对这些数值进行感测的传感器 又存在一个设定的目标值 这一种系统称为闭环控制系统 closed loop control system 系统中三个数值的
  • 工作能力构架框架图——我对工作的理解

    工作架构图 最近对工作内容进行了一次review 归纳如下 做简单地分享 job层 job层是我们最容易理解的一层 即我们平时的工作title 可能是销售 售前 产品等等 那么做产品的人能不能做售前呢 我想 肯定可以 因为在人力资源市场上
  • 解决eclipse出现launch failed,binary not found 的问题

    解决eclipse出现launch failed binary not found 的问题 仅作为解决问题的记录 问题描述 1 之前一直用eclipse写C 文件 后面学了java就用eclipse写了一些 java文件 但是偶然一次想要再
  • ValueError: column index (256) not an int in range(256)

    pandas 保存为xls时最大列为256 改为保存csv格式可避免该限制 解决方法 pd DataFrame in shp pre to csv 各区站点 file 14 17 csv
  • 软件开发管理参考网站

    BDD http en wikipedia org wiki Behavior Driven Development Scrum http zh wikipedia org zh Scrum UserCase http www hudong
  • Kubernetes 资源管理:最大化集群性能

    今天是 DevOps云学堂 与你共同进步的第 54天 Kubernetes 资源管理是部署和管理容器化应用程序的一个关键方面 它允许管理员控制系统不同部分之间计算资源的分配 例如CPU 内存和存储 有效的资源管理可确保应用程序获得正确运行所
  • Latex 字体的设置

    一 字体族的设置 1 说明 1 字体命令 textrm Roman Family 在花括号内的字体都是Roman Family 字体 2 字体声明 rmfamily Roman Family 该命令下面的字体都是是Roman Family字
  • Vim几种跳转方式

    Vim几种跳转方式 ps 以下时我常用的一些跳转指令 用于参考和复习记忆 还有一些后续会更新 文件内跳转 移动光标 普通模式下左h 右l 上k 下j 可以使用数字 hlkj 实现跳跃式移动 字符间跳转 跳转到当前字符的前面 普通模式下i 跳
  • CesiumJS三维案例

    WebGL近几年越来越被人们所关注 但是二三维开发难度也比普通web要高出许多 不管我们是在在开发或者是学习过程中 往往需要耗费大量的时间去查阅资料和研究官方案例 让本来就非常紧张的而宝贵的精力卷到了不关紧要的地方 而大多二三维的包 ope
  • apk文件结构解析一

    Apk文件用WINRAR压缩软件解压缩后 如下图所示 主要是三个文件 lib META INF res 和三个文件夹 AndroidManifest xml classes dex resources arsc 用工具展开可以看到如下所示的
  • Protobuf在java中的简单使用实例

    TTprotobuf是一种跨语言的数据转换协议 由google开源的 已支持大部份语言 在一般的数据交互过程中都是使用json xml等来做数据的转换 这其中涉及复杂的解析与序列化反序列化问题 如果在大量数据并发请求时 也会导致性能问题 p
  • Vue-过滤器

    Vue 过滤器 过滤器 过滤器 Filters 是vue 为开发者提供的功能 常用于文本的格式化 过滤器可以用在两个地方 插值表达式 和 v bind 属性绑定 过滤器应该被添加在JavaScript 表达式的尾部 由 管道符 进行调用 p
  • 图像增强之同态滤波python实现——20221204工作总结

    目录 参考 同态滤波python实现 代码 效果 参考 1 https wenku baidu com view 4eb598180a12a21614791711cc7931b765ce7ba9 html wkts 167005422236