本文要点在于Python内置函数和扩展库pillow的用法。图像空域融合的主要思路是:把所有含有随机噪点的临时图像中对应位置像素值的平均值作为最终像素值,生成结果图像,这样可以很大程度上消除随机噪点。

from random import randint

from PIL import Image

#根据原始24位色BMP图像文件,生成指定数量含有随机噪点的临时图像

def addNoise(fileName, num):

#这里假设原始图像为BMP文件

if not fileName.endswith('.bmp'):

print('Must be bmp image')

return

#生成num个含有随机噪点的图像文件

for i in range(num):

#打开原始图像

im = Image.open(fileName)

#获取图像尺寸

width, height = im.size

#每个结果图像中含有的噪点数量可能会不一样

n = randint(1, 20)

for j in range(n):

#随机位置

w = randint(0, width-1)

h = randint(0, height-1)

#修改随机位置的像素值

im.putpixel((w,h), (0,0,0))

#保存结果图像

im.save(fileName[:-4]+'_'+str(i+1)+'.bmp')

#根据多个含有随机噪点的图像,对应位置像素计算平均值,生成结果图像

def mergeOne(fileName, num):

if not fileName.endswith('.bmp'):

print('Must be bmp image')

return

#列表推导式,打开上面的函数生成的所有含有噪点的图像

ims = [Image.open(fileName[:-4]+'_'+str(i+1)+'.bmp') for i in range(num)]

#创建新图像

im = Image.new('RGB', ims[0].size, (255,255,255))

for w in range(im.size[0]):

for h in range(im.size[1]):

#生成器推导式,计算所有临时图像中对应位置上像素值的平均值

r = sum((tempIm.getpixel((w,h))[0] for tempIm in ims)) // num

g = sum((tempIm.getpixel((w,h))[1] for tempIm in ims)) // num

b = sum((tempIm.getpixel((w,h))[2] for tempIm in ims)) // num

#写入结果图像中对应位置

im.putpixel((w,h), (r,g,b))

#保存最终结果图像

im.save(fileName[:-4]+'_result.bmp')

#对比合并后的图像和原始图像之间的相似度

def compare(fileName):

im1 = Image.open(fileName)

im2 = Image.open(fileName[:-4]+'_result.bmp')

width, height = im1.size

#图像中的像素总数量

total = width * height

#两个图像中对应位置像素值相似的次数

right = 0

#判断是否相似的阈值

expectedRatio = 0.05

for w in range(width):

for h in range(height):

#获取两个图像同一位置上的像素值

c1 = im1.getpixel((w,h))

c2 = im2.getpixel((w,h))

#生成器推导式,判断两个像素值各分量之差的绝对值是否小于阈值

similar = (abs(i-j)<255*expectedRatio for i,j in zip(c1,c2))

#如果每个分量都小于阈值,相似像素个数加1

if all(similar):

right += 1

return (total, right)

if __name__ == '__main__':

#生成4个临时图像,然后进行融合,并对比融合后的图像与原始图像的相似度

addNoise('test.bmp', 4)

mergeOne('test.bmp', 4)

result = compare('test.bmp')

print('Total number of pixels:{0[0]},right number:{0[1]}'.format(result))

测试用的原图:

使用本程序生成的4幅含有随机噪点的图像:





使用本程序对4幅图像进行融合以后得到的结果图像:

Python使用空域融合技术进行图像去噪相关推荐

  1. ADCIRC模式与Python融合技术应用

    前言:ADCIRC是新一代海洋水动力计算模型,它采用了非结构三角形网格广义波动连续方程的设计,在提高计算精确度的同时还减小了计算时间.被广泛应用于:模拟潮汐和风驱动的循环.预测风暴潮和洪水和近岸海上作 ...

  2. WRF模式与Python 融合技术及精美绘图(包含前后处理及自动化运行)

    原文>>>WRF模式与Python融合技术在多领域中的应用及精美绘图 本内容既有 WRF 模式理论讲解,从动力方程.参数化方案的介绍到模式应用场景,又有实操环节,从基础的 Linux ...

  3. Biome-BGC生态系统模型与Python融合技术实践应用

    查看原文>>> Biome-BGC生态系统模型与Python融合技术实践应用 Biome-BGC是利用站点描述数据.气象数据和植被生理生态参数,模拟日尺度碳.水和氮通量的有效模型,其 ...

  4. 「云毕业照」刷爆朋友圈!AI人脸融合技术谁家强?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 2020,特殊的毕业季,需要特殊的纪念. 之前看过日本东京的BBT大学使用的「Newme」机器人代替学 ...

  5. 基于python的知识融合_知识融合

    百香果nlp(nlp.100xg.cn):欢迎提交人工智能(AI).自然语言处理(NLP).大数据(big data).机器学习(ML).数据挖掘(DM).知识图谱.智能硬件.工业互联网.工业机器人. ...

  6. 【NLP】python中英文关键词抽取技术总结

    [NLP]python中英文关键词抽取技术总结 无论是在中文还是英文中关键词抽取技术都是有着很重要的应用价值和分析价值,下面在python环境中分别针对中文和英文介绍几种常用的关键词抽取方法. 1. ...

  7. 目标检测中特征融合技术(YOLO v4)(下)

    目标检测中特征融合技术(YOLO v4)(下) ASFF:自适应特征融合方式 ASFF来自论文:<Learning Spatial Fusion for Single-Shot Object D ...

  8. 目标检测中特征融合技术(YOLO v4)(上)

    目标检测中特征融合技术(YOLO v4)(上) 论文链接:https://arxiv.org/abs/1612.03144 Feature Pyramid Networks for Object De ...

  9. 无人驾驶传感器融合技术

    无人驾驶传感器融合技术 多传感器融合 多传感器融合要求: 1 )硬件层面:数量要足够,也就是不同种类的传感器都要配备,才能够保证信息获取充分且有冗余: 2 )软件层面:算法要足够优化,数据处理速度要够 ...

最新文章

  1. RDKit | 删除方差低的描述符
  2. 【杂谈】有三AI知识星球指导手册出炉!和公众号相比又有哪些内容?
  3. python import 文件路径_python之import子目录文件
  4. #pragma multi_compile_fwdbase会增加很多个shader variants
  5. LeetCode2——Add Two Numbers(两个链表中的数字相加,形成新链表)
  6. 使用cURL操作Openstack对象存储的ReST API
  7. java入门代码大全,2022最新
  8. ppt转换成pdf软件免费版
  9. lisp 计算三点的夹角_平面三点计算夹角
  10. 设为首页,加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
  11. 自动化机器人 rpa_机器人来了—自动化可能拯救地球
  12. 三菱化学控股公司:关于代表执行董事的人事变动通知
  13. BMP图片-文件头部信息
  14. 优秀站长工具推荐之百度统计热力图用户体验要素
  15. unity 弹窗提示_【原创】Unity3D 消息提示框
  16. PPT转word可以使用什么软件
  17. python 传奇服务端_Python官方最后通牒:Python 2传奇20年将落幕,Python 3接力!
  18. 端游开发中用什么技术可以让用户更短时间内体验游戏?端游分发
  19. Spring设置定时任务时,关于执行时间的规则设置
  20. 重磅!2022年全球汽车零部件供应商百强发布

热门文章

  1. 小学数学开灯问题_【数学攻略】小学四年级数学“相遇问题”全普及
  2. mysql time 5分钟_MySQL 使用 PV 和 PVC 每天5分钟玩转 Docker 容器技术(154)
  3. java thread 输出结果_大神来看看这段程序输出结果是什么?
  4. css动漫效果库,Animate.css功能强大的纯CSS3动画库 - 资源分享
  5. solid 铝型材框架_solidworks铝型材库
  6. php中const的意思,php – 在const中使用const
  7. android新版本广告,新增朋友圈广告?微信6.1安卓新版发布
  8. mysql time转换输出_MySQL将timediff输出转换为日,时,分,秒格式?
  9. HP-UX Oracle Ioctl ASYNC_CONFIG error=1
  10. 11g cursor_sharing 参数说明