一文总结Python数字图像处理基础知识与前沿应用

2023-11-01

 
 

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

介绍

数字图像处理由涉及在计算机上处理图像的各种技术和方法组成。对图像进行各种类型的操作,构成数字图像处理。

了解图像实际上是什么

图像基本上是二维信号。信号函数是 f(x,y),其中 x 和 y 在某个点的值生成该点的像素。图像基本上是一个由 0 到 255 之间的数字组成的二维数组。

图像处理涉及多种因素。图像处理有几个主要动机。

图像处理帮助

  1. 改进我们存储的数字信息。

  2. 使图像处理自动化。

  3. 更好的图像优化,实现高效的存储和传输。

这些年来,图像处理有了很大的进步,图像处理的现代商业应用也很多。

图像处理用途

1.  图像校正、锐化和分辨率校正

通常,我们希望我们可以将旧图像做得更好。这在今天是可能的。缩放、锐化、边缘检测、高动态范围编辑都属于这一类。所有这些步骤都有助于增强图像。大多数编辑软件和图像校正代码都可以轻松完成这些操作。

2. 编辑应用程序和社交媒体的过滤器

如今,大多数编辑应用程序和社交媒体应用程序都提供过滤器。

6f59fdeaa688290a849e825ff3a3e078.jpeg

以上是原始图像和过滤后的图像的示例。滤镜使图像看起来更具视觉吸引力。滤镜通常是一组函数,可以更改图像中的颜色和其他方面,使图像看起来不同。过滤器是图像处理的一个有趣应用。

3. 医疗技术

在医学领域,图像处理用于各种任务,如 PET 扫描、X 射线成像、医学 CT、紫外线成像、癌细胞图像处理等等。将图像处理引入医疗技术领域极大地改善了诊断过程。

a3a601df5cdfe3f9eec92e54c43d195a.jpeg

左边的图像是原始图像。右边的图像是经过处理的图像。我们可以看到处理后的图像要好得多,可以用于更好的诊断。

4. 计算机/机器视觉

图像处理最有趣和最有用的应用之一是计算机视觉。计算机视觉用于使计算机看到、识别事物,并将整个环境作为一个整体进行处理。计算机视觉的一个重要用途是自动驾驶汽车、无人机等。CV 有助于障碍物检测、路径识别和理解环境。

24fd1aa9afcd4fa868d89fe2071d265b.jpeg

这就是典型的计算机视觉对汽车自动驾驶仪的工作方式。计算机接收实时镜头并分析其他汽车、道路和其他障碍物。

5. 模式识别

模式识别是图像处理的一部分,涉及人工智能和机器学习。图像处理用于找出图像中的各种模式和方面。模式识别用于手写分析、图像识别、计算机辅助医疗诊断等。

6. 视频处理

视频基本上是图像的快速移动。视频处理中使用了各种图像处理技术。视频处理的一些方法是噪声去除、图像稳定、帧速率转换、细节增强等等。

Python 图像处理入门

让我们从 Python 中的一些基本图像相关任务开始。我们将使用 PIL。

PIL:https://pypi.org/project/Pillow/

Python 图像库用于各种图像处理任务。

安装

pip install pillow

安装了PIL后,我们现在可以转到代码了。

首先,我们使用一些 matplotlib 函数。

import matplotlib.image as img
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

将读取以下图像。它被命名为 image1.jpg。

37e45bae132a7e423d1bae458d20ed08.jpeg

# reading jpg image 
img = img.imread('image1.jpg')
plt.imshow(img)

9558f6de9e606a825aca310c51e3ca26.jpeg

图像被读取。

# modifying the shape of the image
lum1 = img[:, :, 0] 
plt.imshow(lum1)

现在修改了图像形状。

b7f59a63c329a55dc522d203c3ce3068.jpeg

现在我们将其更改为“热”颜色图。

要了解有关颜色图的更多信息,请访问此链接:https://matplotlib.org/stable/tutorials/colors/colormaps.html。

plt.imshow(lum1, cmap ='hot') 
plt.colorbar()

图像输出看起来:

f65dd4ca6e6c6a528f1714230c167373.jpeg

现在我们尝试不同的颜色图。

imgplot = plt.imshow(lum1)
imgplot.set_cmap('nipy_spectral')

图像输出:

dc9cc13698623cb54fc6233f63f8ac4c.jpeg

使用颜色图的原因是,通常在各种应用程序和用途中,拥有统一的颜色图会有所帮助。阅读有关颜色图的更多信息:在 Matplotlib 中选择颜色图 https://matplotlib.org/stable/tutorials/colors/colormaps.html。

现在让我们看看为什么我们将图像称为二维数组。

#data type of lum1

print(type(lum1))

输出:<class 'numpy.ndarray'>

print(lum1)

[[ 92 91 89 … 169 168 169]

[110 110 110 … 168 166 167]

[100 103 108 … 164 163 164]

[ 97 96 95 … 144 147 147]

[ 99 99 98 … 145 139 138]

[102 102 103 … 149 137 137]]

这些点只是为了表明它们之间还有更多的数据点。但是可以肯定的是,所有数据都是数字数据。

让我们找出数组的大小。

len(lum1)

输出:320

len(lum1[300])

输出:658

这为我们提供了图像的像素数和尺寸:320*658。

我们稍后也会验证这一点。

现在,我们使用 PIL。

from PIL import Image

我们将使用这个图像文件,命名为:people.jpg。

1b73a7af00712f87ade14bb8be30a363.png

img2 = Image.open('people.jpg')
plt.imshow(img2)

519a81fbc8b92296a06413d5ffde88b6.jpeg

图像被读取。

现在,我们调整图像大小。

img2.thumbnail((50, 50), Image.ANTIALIAS)  # resizes image in-place
imgplot = plt.imshow(img2)

289fbe83074f1ea4b37678c502c8c03e.jpeg

imgplot1 = plt.imshow(img2, interpolation="nearest")

6087cc0ab8b3a59d146a5605bcb68e8d.jpeg

imgplot2 = plt.imshow(img2, interpolation="bicubic")

6ea268dc3093ac83d841fd970be82a44.jpeg

但是,为什么我们在图像处理中故意模糊图像?通常对于模式识别和计算机视觉算法,如果图像非常清晰,处理起来就会很困难。因此进行模糊处理以使图像平滑。模糊还可以使图像中的颜色过渡从一侧到另一侧更加平滑。

现在,让我们验证我们之前处理过的汽车图像的尺寸。

#some more interesting stuff
file='image1.jpg'
with Image.open(file) as image: 
    width, height = image.size 
#Image width, height is be obtained

34ddfec9d3b0f549bc15027cd9256444.jpeg

这些也是我们之前得到的维度。所以我们可以得出结论,图像是320*658。

让我们也尝试旋转和转置图像。

#Relative Path 
img3 = Image.open("image1.jpg")  
#Angle given 
img_rot= img3.rotate(180)  
#Saved in the same relative location 
img_rot.save("rotated_picture.jpg")

c599b48661baa776dff2087d4ed9f28f.jpeg

这是旋转后的图像。

#transposing image  
transposed_img = img3.transpose(Image.FLIP_LEFT_RIGHT)
#Saved in the same relative location 
transposed_img.save("transposed_img.jpg")

dff68f1703dfe0529accc5012dfd944b.jpeg

这是转置后的图像。

尾注

图像处理有各种重要的应用,随着时间的推移,方法和过程也会得到改进。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文总结Python数字图像处理基础知识与前沿应用 的相关文章

  • 如何在不在 iPython 笔记本中使用离线模式下的plotly进行绘图?

    我需要使用plotly绘制我的数据 但是这段代码没有给我任何结果 我显示我的数据 但没有任何数字 import plotly graph objs as go from plotly offline import download plot
  • 为什么Python中的打印需要三个撇号?

    我正在用 Python 3 3 2 制作这个毕达哥拉斯定理计算器 我打印了几行 以便我可以制作图表 print Welcome to the Pythagoras Theorem Calculator powered by Python p
  • Django 自引用关系?

    我正在尝试创建模型页面 页面也应该能够有 子页面 我的模型代码如下使Python崩溃 http pastie org private butthk1aaeb3pmh7mmag1g在我的Mac python 2 6 1 和Ubuntu 10
  • 使用 JSON 将数据从 Python 导出到 Tableau?

    如何以表格形式从 Python 获取 400 万行和 28 列 我假设 基于搜索 我应该使用 JSON 格式 这种格式可以处理大量数据并且足够快 我制作了 12 行数据的子集并尝试使其正常工作 好消息是 它正在发挥作用 坏消息 不是我想要的
  • Python Turtle 中的 onkeypress() 和 Listen() 问题

    我的一个功能有问题 我使用 Python 3 7 当我尝试使用onkeypress 函数 什么也没有发生 我尝试检查它 但是当我按键时乌龟模块没有反应 我尝试使用 w 键向上移动桨 但这不起作用 以下是我的 py 文件 main py im
  • 来自 yahoo 的 python lxml etree 小程序信息

    雅虎财经更新了他们的网站 我有一个 lxml etree 脚本 用于提取分析师建议 然而现在 分析师的建议已经存在 但只是以图表的形式出现 你可以看到一个例子这一页 https finance yahoo com quote CSX ana
  • ibapi nextValidId 并不总是被调用

    我构建了一个小型 ibapi python 应用程序来运行一些策略 同时注意保持与 tws 的连接 如果 tws 处于非活动状态 python 应用程序将启动并等待 并在 tws 启动时连接到 tws 但这是我的问题 nextValidId
  • 对训练和测试数据帧使用相同的标签编码器

    我有 2 个不同的 csv 其中包含训练数据和测试数据 我从这些 train features df 和 test features df 创建了两个不同的数据帧 请注意 测试和训练数据有多个分类列 因此我需要对它们应用 labelEnco
  • 如何从数据存储区刷新 NDB 实体?

    我希望能够在我的代码调用的测试中断言Model put 对于已修改的实体 不幸的是 似乎正在进行一些缓存 例如以下代码 from google appengine ext import ndb class MyModel ndb Model
  • 从 paramiko 获取 PID

    我找不到一个简单的答案 我正在使用 paramiko 远程登录并执行多个进程 我需要每个进程的 PID 以便稍后检查它们 paramiko 中似乎没有函数来获取执行命令的 PID 所以我尝试使用以下命令 stdin stdout stder
  • 如何使用 Python 从 URL 中删除查询字符串

    Example http example com a text q2 text2 q3 text3 q2 text4 删除后 q2 它将返回 http example com q text q3 text3 在这种情况下 出现了多个 q2
  • 重置Keras模型的所有权重

    我希望能够重置整个 Keras 模型的权重 这样我就不必再次编译它 编译模型目前是我的代码的主要瓶颈 这是我的意思的一个例子 import tensorflow as tf model tf keras Sequential tf kera
  • 相比之下,超出了最大递归深度

    我写了这段代码来计算组合的数量 def fact n return 1 if n 1 else n fact n 1 def combinations n k return fact n fact n k fact k while True
  • Python Selenium 将内容添加到 pandas 数据帧

    我正在尝试循环list用于抓取内容的邮政编码this url http kadastralekaart com 但我面临着错误 例如TimeoutException and StaleElementReferenceException 我该
  • PySpark:根据与另一列中的字符串匹配的字典值创建新列

    我有一个数据框 A 如下所示 ID SOME CODE TITLE 1 024df3 Large garden in New York New York 2 0ffw34 Small house in dark Detroit Michig
  • 使用 Python for PyQt WebEngine 授予对 Cam & Mic 的访问权限

    我正在构建一个从 Python 调用的简单 Web 应用程序 我正在使用下面的代码 加载此页面时 以编程方式授予对摄像头和麦克风的访问权限的最简单方法是什么 我只在网上找到了 C 示例 无法找到在 Python 代码中执行此操作的方法 fr
  • Numpy 相当于 if/else 不带循环

    有没有任何Pythonic方法可以删除下面代码中的for循环和if else 此代码迭代 NumPy 数组并检查条件并根据条件更改值 gt gt gt import numpy as np gt gt gt x np random rand
  • 从 NumPy、matplotlib 包导入 python 子模块有什么区别[重复]

    这个问题在这里已经有答案了 当我尝试使用时pyplot from matplotlib import matplotlib print matplotlib pyplot just checking 它给了我AttributeError m
  • 二进制补码扩展 python?

    我想知道是否有一种方法可以像在 Python 中的 C C 中一样使用标准库 最好在位数组上 进行二进制补码符号扩展 C C Example program include
  • Python:正则表达式 findall

    我使用 python 正则表达式从给定字符串中提取某些值 这是我的字符串 mystring txt sometext somemore text here some other text course course1 Id Name mar

随机推荐

  • tcpdump抓包注意事项

    使用tcpdump进行抓包 然后用wireshark进行分析的时候 出现了 Packet size limited during capture 也不算是错误 只是数据包里的内容无法完全查看清楚 经过查询 原因是因为我在Linux下进行抓包
  • es6合并对象

    es5 let name name sea age age 15 person Object assign person name age console log person name sea age 15 es6 let name na
  • golang 读取项目配置文件

    golang读取文件配置 介绍golang项目中配置文件的读取相关内容 包括项目结构 具体实现代码等内容 ref 煎鱼 实际上这只是煎鱼博客项目中的一小部分 项目结构 配置读取相关文件结构如下 config文件夹下存放config yaml
  • 大数据从入门到精通(超详细版)之 Hive的配置与基本语法

    前言 嗨 各位小伙伴 恭喜大家学习到这里 不知道关于大数据前面的知识遗忘程度怎么样了 又或者是对大数据后面的知识是否感兴趣 本文是 大数据从入门到精通 超详细版 的一部分 小伙伴们如果对此感谢兴趣的话 推荐大家按照大数据学习路径开始学习哦
  • xman的思维导图快捷键_思维导图软件——MindMaster常用快捷键汇总

    原标题 思维导图软件 MindMaster常用快捷键汇总 思维导图 英文是The Mind Map 又叫心智导图 是表达发散性思维的有效图形思维工具 MindMaster Mac版是最新推出的一款免费跨平台 多功能的思维导图软件 可以帮助您
  • 发明计算机的人的名人名言,60句关于发明的名言

    1 没有艰苦的学习 就没有最简单的科学发明 南斯拉夫谚语 2 需要是发明之母 拉丁谚语 3 天才是不足恃的 聪明是不可靠的 要想顺手拣来的伟大科学发明是不可想象的 华罗庚 4 一项发明创造会带来更多的发明创造 爱默生 5 科学的真正的与合理
  • Selenium下Chrome配置 (含启动无痕界面--无界面浏览器)

    转载 https www cnblogs com kaibindirver p 11432850 html Selenium下Chrome配置 含启动无痕界面 无界面浏览器 例子 设置无界面模式浏览器启动 chrome options we
  • MapReduce shuffle过程详解

    一 MapReduce计算模型 我们知道MapReduce计算模型主要由三个阶段构成 Map shuffle Reduce Map是映射 负责数据的过滤分法 将原始数据转化为键值对 Reduce是合并 将具有相同key值的value进行处理
  • OpenMV4开发笔记4-舵机控制

    OpenMV4的舵机控制脚有3个 P7 P8 P9 即可以控制3个舵机 Servo 1 gt P7 PD12 Servo 2 gt P8 PD13 OpenMV3 M7 OpenMV4 H7上增加 Servo 3 gt P9 PD14 注意
  • 论EI、SCI和ISTP检索论文的收录号和期刊号查询方法

    http www scitsg com Article 134240802101541 aspx 需要申请博士后进站和国家自然科学基金的朋友都知道申请博士后进站和国家自然科学基金需要填写很多申请表格 其中就需要填写所发表的EI SCI和IS
  • Activiti 流程引擎之流程任务创建、部署流程、流程任务启动、查看当前任务、完成当前任务

    1 流程任务创建 1 在项目中创建diagram文件夹 并创建Activiti Diagram文件MyProcess bpmn 2 创建MyProcess bpmn 流程 详情如下 整体结构示意图 右击diagram文件夹 新建一个Acti
  • 折半查找——(递归,非递归C语言实现)

    折半查找 基本概念 1 折半查找 对半查找 二分查找 a 在 有序表 假设为递增 lt 先排序 gt 中 取中间记录作为比较对象 b 若给定值与中间记录相等 则查找成功 若给定值小于中间记录 则在有序表的左半区继续查找 若给定值大于中间记录
  • Redis 常见数据类型的使用场景以及底层结构

    前言 Redis 是一种基于内存的高性能的键值存储系统 支持多种数据类型 持久化 高可用集群等 在 Redis 中 每种数据类型都有自己独特的底层实现方式 这些实现方式直接影响着 Redis 的性能 本文将介绍 Redis 各种数据类型的使
  • docker 升级php7.3,docker容器如何升级

    解决方法 1 升级Image 只要从服务器拉下来最新的数据就行了 docker pull quay io sameersbn redmine latest 2 关闭旧容器并删除 到工作目录 data 使用 docker compose 来关
  • Unity Shader入门精要之第5 章 开始Unity Shader 学习之旅

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 5 1 本书使用的软件和环境 5 2 一个最简单的顶点 片元着色器 5 2 1 顶点 片元着色器的基本结构 参考 前言 欢迎来到本书的第 2 篇 初级篇 在基础篇中 我们学
  • HTML框架与内联框架

    目录 实例 框架 框架标签 Frame 基本的注意事项 有用的提示 更多实例 添加 iframe 的语法 Iframe 设置高度和宽度 实例 Iframe 删除边框 实例 使用 iframe 作为链接的目标 实例 HTML iframe 标
  • elasticsearch基础 学习笔记

    1 初识elasticsearch 1 1 什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎 可以帮助我们从海量数据中快速找到需要的内容 elasticsearch结合kibana Logstash
  • 8天学通MongoDB——第一天 基础入门

    关于mongodb的好处 优点之类的这里就不说了 唯一要讲的一点就是mongodb中有三元素 数据库 集合 文档 其中 集合 就是对应关系数据库中的 表 文档 对应 行 一 下载 上MongoDB官网 我们发现有32bit和64bit 这个
  • 华为od机试 python【计算玩牌最高得分】

    前言 Java 版本 链接 题目 代码 def calculate max score scores n len scores best scores 0 n for i
  • 一文总结Python数字图像处理基础知识与前沿应用

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 介绍 数字图像处理由涉及在计算机上处理图像的各种技术和方法组成 对图像进行各种类型的操作 构成数字图像处理 了解图像实际上是什么 图像基本上是二维信号 信号函数是 f x