
图像处理
文章平均质量分 81
赵卓不凡
公众号:AI算法之道
展开
-
一种简单的自编码器PyTorch代码实现
在本文中,我们使用数据集来完成此任务。戳我。该数据集已在torchvision库中集成;我们可以通过几行代码直接导入和处理该数据集。为此,首先需要是编写一个collate_fn函数,将数据集从PIL图像转换为torch张量,并进行相应的pad# x;# y本文重点介绍了如何利用Pytorch来实现自编码器,从数据集,到搭建网络结构,以及特征可视化和网络预测输出几个方面,分别进行了详细的阐述,并给出了相应的代码示例。您学废了吗?戳我。原创 2023-12-23 20:04:12 · 1851 阅读 · 0 评论 -
Python中图像相似性度量方法汇总
在当今视觉世界中,测量图像相似性的能力是众多应用程序的重要组成部分。本博客向大家介绍了各种图像相似性方法,从简单的基于直方图的方法到复杂的基于深度学习技术的实现方法。更进一步,大家还可以探索,这是一类专门为图像相似性任务设计的神经网络。嗯嗯,您学废了吗?原创 2023-10-14 13:12:29 · 2243 阅读 · 0 评论 -
基于HSV空间的彩色图像分割技术
每当我们看到图像时,它通常都是由各种元素和目标组成的。在某些情况下,我们可能会想要从图像中提取某个特定的对象,大家会怎么做?首先我们会想到的是进行crop相关的操作,这在某种程度上是可行的,但是这通常也会有一些不相关的像素会被包括在内,我确信大多情况下我们不希望这样。事实上,我们可以使用图像处理技术来获得感兴趣的物体。闲话少说,我们直接使用Python来进行图像分割。原创 2023-10-04 20:22:47 · 814 阅读 · 0 评论 -
图像后期处理操作
本文针对拍摄图像后期处理过程进行了相关总结,并给出了具体示例,以及每一步详细处理步骤,同时给出了其他样例图像。您学废了嘛?原创 2023-08-26 19:44:01 · 367 阅读 · 0 评论 -
图像处理技巧形态学滤波之膨胀操作
本文重点介绍了和腐蚀操作相反作用得膨胀操作,并通过具体例子进行了原理讲解,同时给出了相应得代码示例。您学废了嘛?原创 2023-08-12 20:46:25 · 1296 阅读 · 0 评论 -
OpenCV图像处理技巧之空间滤波
瞧!这些滤波器为我们提供了图像转换的巨大魅力,可以突出隐藏的细节并增强其视觉冲击力。通过了解每种滤波器的特性和应用,可以释放我们的创造力,探索图像处理的无限可能性。这不是很酷吗?😎。原创 2023-08-04 17:42:50 · 406 阅读 · 0 评论 -
用OpenCV图像处理技巧之白平衡算法(二)
最后的最后,我们对本系列讲解白平衡算法的三种效果进行汇总,结果如下:本文所介绍的三种白平衡算法都矫正了图像中的颜色投射关系,最终,算法的选择取决于应用程序的具体要求和假设。一般来说,和Gray world算法适用于通用颜色校正,而算法非常适合有参考白色补丁的专业应用。您学废了嘛?原创 2023-07-27 19:58:36 · 831 阅读 · 0 评论 -
用OpenCV图像处理技巧之白平衡算法(一)
白平衡是一种用于校正由不同照明条件引起的图像中的颜色校正的技术。这是一个调整图像颜色对比度的过程,使白色看起来像白色,使黑色看起来像黑色。这对于确保图像中的颜色是准确的并且对人眼来说是自然的是非常重要的。本文重点介绍了使用进行白平衡进而改善图像成像质量的算法细节,并总结了该算法的优缺点并给出了相应的代码示例。您学废了嘛?参考。原创 2023-07-23 10:18:20 · 1102 阅读 · 2 评论 -
用OpenCV图像处理技巧之巧用直方图
在这一节中,我们深入探讨了图像处理的世界,探索了各种图像增强技术。重点介绍了利用直方图技术来实现各种图像增强的效果,并给出了相应的代码示例。您学废了嘛?原创 2023-07-22 16:59:05 · 505 阅读 · 0 评论 -
用OpenCV进行图像分割--进阶篇
通过上述分析,我们一步一步实现了利用RG-色度空间来分割绿色植物的目标,并针对每一步骤都进行了相应的讲解和代码示例,您学废了嘛!原创 2023-07-09 20:55:37 · 10244 阅读 · 2 评论 -
用OpenCV进行传统图像分割
哇,我们今天的旅程简直太棒了!我们对图像分割的深入研究无疑为我们如何从图像中提取有意义的信息提供了有效的方法。希望大家可以通过上述案例,进入到图像处理的神秘领域,感叹相关算法的魅力。原创 2023-07-03 20:03:48 · 2476 阅读 · 0 评论 -
用OpenCV进行透视变换
经过我们一步一步的优化,我们最终得到了,一幅美丽而干净的自上而下的油画。一般来说,一旦我们有了单应矩阵,我们也可以用它来变换一幅图像,使其与另一幅图像的视角对齐。这对于图像拼接等应用非常有用!嗯嗯,您学废了嘛?原创 2023-06-23 11:01:55 · 6214 阅读 · 0 评论 -
用OpenCV进行模板匹配
本文重点介绍了在传统图像处理中,如何利用模板匹配的方法来进行从表情包图像中寻找心动表情模板的样例,并给出了相应的代码实现。由于是传统方案,该方法的阈值选择和泛化能力都有一定的局限性,但是学习其背后的原理可以帮助我们更好的理解相关理论概念。原创 2023-06-23 09:52:10 · 3514 阅读 · 0 评论 -
霍夫变换直线检测原理和应用
尽管该算法现已集成在各种各样的图像处理库,但本文通过自己实现它,我们可以深入了解在创建如此复杂的算法时所面临的挑战和局限性。嗯嗯,您学废了嘛?戳我。原创 2023-03-26 09:35:48 · 3402 阅读 · 3 评论 -
神经网络中的参数量和FLOPs的计算
最后,我们从原理到例子,由前入深地介绍了卷积神经网络中卷积层参数量和计算量的定义。您学废了嘛?原创 2022-11-03 19:55:17 · 1186 阅读 · 0 评论 -
利用Python创作热力图
本文介绍了如何在Python中一步一步地实现热力图艺术风格图,并展示了不同调色板设置下的效果图,并给出了相应的代码示例。您学废了嘛?原创 2022-09-14 20:35:31 · 14051 阅读 · 5 评论 -
【Python】推荐五个常用的图像处理库
1. 引言Python目前是世界上使用最多的编程语言之一。它能够以更少的工作量和更少的代码行数来完成许多事情。它还可以使用很少的代码行来方便地编辑和创建图像。本文重点介绍,在图像处理领域,我们最常使用的一些Python开源库。闲话少说,我们直接开始吧!2. Pillow库Pillow是Python中常用的图像处理库之一。它提供了许多操作图像的函数,如调整大小、滤波操作等。这是Python中最好用的图像处理库之一。唯一的缺点是它已经很久没有更新了。安装安库的命令如下:pip install pi原创 2022-05-19 21:48:51 · 8515 阅读 · 2 评论 -
【Opencv】图像投影直方图
1. 引言本文将展示什么是图像的投影直方图,以及如何绘制这个投影直方图。举例,如果我们想识别一些字符,我们可以使用投影将特征提取到图像上。投影直方图是使用图像在既定方向上的投影的方法,例如,在垂直或水平方向上。这些投影意味着每列或每行中属于对象的像素数目。2. 投影直方图的作用我们来看个简单的例子,如下图:上图分别代表数字5以及其垂直和水平投影。上述两个直方图可以用作数字5的向量描述符,我们将其与标识数字0到9的直方图向量进行相似度计算后,就可以知道当前该数字是数字多少。3. 实际应用接着我原创 2022-05-14 14:46:56 · 1151 阅读 · 0 评论 -
在Python中使用OpenCV进行直线检测
1. 引言在图像处理中,直线检测是一种常见的算法,它通常获取n个边缘点的集合,并找到通过这些边缘点的直线。其中用于直线检测,最为流行的检测器是基于霍夫变换的直线检测技术。2. 霍夫变换霍夫变换是图像处理中的一种特征提取方法,可以识别图像中的几何形状。它将在参数空间内进行投票来决定其物体形状,通过检测累计结果找到一极大值所对应的解,利用此解即可得到一个符合特定形状的参数。在使用霍夫变换侦测直线前,须先利用边缘检测算法来减少图像的数据量、剔掉不相关的信息,保留图像中重要的结构特征。3. 举个栗子3.原创 2022-03-01 21:55:46 · 8018 阅读 · 1 评论 -
如何使用OpenCV进行物体轮廓排序
1 引言在进行图像处理过程中,我们经常会遇到一些和物体轮廓相关的操作,比如求目标轮廓的周长面积等,我们直接使用Opencv的findContours函数可以很容易的得到每个目标的轮廓,但是可视化后, 这个次序是无序的,如下图左侧所示:本节打算实现对物体轮廓进行排序,可以实现从上到下排序或者从左倒右排序,达到上图右侧的可视化结果.闲话少说,我们直接开始吧. ????2 举个栗子2.1 读取图像首先,我们来读取图像,并得到其边缘检测图,代码如下:image = cv2.imread(args[原创 2021-12-17 21:11:38 · 9030 阅读 · 4 评论 -
使用matplotlib让你的数据更加生动(三)
1 引言在上一节中我们介绍了使用matplotlib进行数据可视化的几种表现方法,包括折线图、散点图、饼状图以及柱状图等, 今天我们来继续学习matplotlib的高级用法,主要包括网络图,流动图以及圆弧图,那么我们开始吧。。。2 网络图分散式网络: 中心化网络和分布式网络的混合体,在这种类型的网络中,少量节点的攻击会降低或破坏整个网络系统的性能.分布式网络: 分布式网络具有抵御攻击的能力,即使在攻击后部分节点无法对网络作出贡献后,该网络仍将继续运行。这与中心化网络不同,中心化网络在中心节点受到攻原创 2021-11-15 16:26:04 · 7130 阅读 · 2 评论 -
使用matplotlib让你的数据更加生动(二)
1 引言在上一节中我们介绍了使用matplotlib进行数据可视化的几种表现方法,包括折线图、散点图、饼状图以及柱状图; 今天我们来继续学习2 堆叠图堆叠图可以很方便的比较数据间不同情况下的差异可视化结果:堆叠图:左上占比100%的堆叠面积图。它用于表示各种数据集而不会彼此重叠,它显示了每个组件相互堆叠以及每个组件如何构成完整的图形。其中各个组件可以用不同的颜色表示。树形图:右上借助squarify显示树形图。代码如下:def test1(): # left data原创 2021-11-12 21:11:41 · 9608 阅读 · 1 评论 -
使用matplotlib让你的数据更加生动(一)
1 引言Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是 Python 常用的 2D 绘图库,同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pandas 一起使用,是数据分析中不可或缺的重要工具之一。本文就日常生活中常见的业务场景进行展开讨论,更详尽的说明可以参考文档。2 折线图折线图(line chart)是我们日常工作、学习中经常使用的一种图表,它可以直观的反映数据的变化趋势。可视化结果:直线:左上直原创 2021-11-10 11:31:52 · 3410 阅读 · 0 评论 -
基于连通域标记的目标数字分割
1 引言最近使用传统方法应用于实际生活中的问题,受到了大家一致的关注。嗯嗯,应该是一致的关注。那么我们今天来研究一个新的好玩的方向,就是基于二值图像进行连通域标记和分析,从而解决数字分割的问题。问题描述:从下图左侧图像中,分割出数字1的图像,如右侧所示:嗯捏。。。先思考2分钟,然后我们用python来一步一步实现吧。。。2 解决方案2.1 读取图像这里我们直接读取灰度图像,需要注意的是需要将其转化为float型数据.这时因为我们后面有些操作可能会将像素值超过[0,255]范围,代码如原创 2021-11-06 13:46:20 · 710 阅读 · 0 评论 -
如何使用传统图像处理方法进行大米的计数和长轴方向标记
1 引言最近使用传统方法进行石头检测和圆的检测的文章,受到了大家一致的好评.嗯嗯,应该是一致的好评!今天我们来研究一个新的方向,如何使用传统方法来进行大米的分割计数和大米长轴方向的标记?如上图所示,我们拍摄了一张包含大米的图像,问题是如何使用图像处理的方法来求出图中共有多少颗大米?嗯嗯,学过图像处理的同学,好多都碰到过类似问题吧,碰巧我也接触了一些图像处理的技巧,那么我们就来尝试解决这个问题吧.2 解决方案2.1 读取图像这里我们直接以灰度方式读取大米的图像,代码如下:# Step 1原创 2021-10-28 11:50:08 · 4111 阅读 · 2 评论 -
如何使用传统图像处理方法进行圆的检测和测量
1 引言上一篇使用传统方法进行石头检测的文章,受到了大家一致的好评.嗯嗯,应该是一致的好评!今天我们来研究一个新的方向,如何使用传统方法来进行圆的检测.如上图所示,存在多个形状各异的物体,这里原型物体只有两个左下角的白色药片,这里我们需要用图像处理的方法来检测出两个圆形物体,并计算圆形物体相应的面积.2 解决方案2.1 二值化传统图像分割一般采用阈值分割的方法来区分前景和背景,这里我们采用OTSU的方法来进行二值化操作,方法如下:image_file = './images/pillset原创 2021-10-26 15:37:13 · 4572 阅读 · 1 评论 -
一文弄懂图像的矩和相关应用
1 引言在数字图像处理、计算机视觉与相关领域中,图像矩(Image moments)是指图像的某些特定像素灰度的加权平均值(矩),或者是图像具有类似功能或意义的属性。图像矩通常用来描述 分割 后的图像对象。可以通过图像的矩来获得图像的部分性质,包括面积(或总体亮度),以及有关几何中心和方向的信息 。2 原始矩对于灰度图像f,其(p+q)阶矩(有时称为"原始矩"),定义如下:mpq=∑x∑yxpyqf(x,y)m_{pq}= \sum\limits_{x}\sum\limits_{y} x^py^q原创 2021-10-23 12:46:00 · 791 阅读 · 0 评论 -
如何使用传统图像处理方法进行石头检测
1 引言最近有小伙伴咨询如何用传统方法进行多个石头检测分割算法, 原文如下所示:嗯嗯,碰巧让我这个问题,然而我碰巧学过图像处理的一些简单知识.我们都知道使用opencv可以快速进行图像的基本操作,那么我们就来尝试解决这个问题吧.2 解决方法2.1 二值化传统图像分割,一般就是采用阈值分割的方法来区分前景物体和背景,这里使用全局阈值分割的方法来进行处理,方法如下:img_file = "./sample.jpeg"img1 = cv2.imread(img_file)img = cv2.原创 2021-10-20 17:18:39 · 3062 阅读 · 3 评论 -
Python图像处理之二值图像腐蚀
1 引言形态学运算是针对二值图像依据数学形态学集合论方法发展起来的图像处理的方法.其主要内容是设计一整套的变换概念和算法,用以描述图像的基本特征.在图像处理中,形态学的应用主要有以下两点:利用形态学的基本运算,对图像进行观察和处理,从而达到改善图像质量的目的;描述和定义图像的各种几何参数和特征等.2 腐蚀概念数学形态学的运算以腐蚀和膨胀这两种基本运算为基础,腐蚀操作在数学形态学上的作用是消除物体的边界点,使边界向内部收缩的过程,主要用于将小于物体结构元素的物体去除.例如两个物体之间有细小的连通,可以原创 2021-09-18 23:29:10 · 1208 阅读 · 0 评论 -
Python优雅地生成拼图效果
1 引言最近无意中看到有同学对图像进行分割后,形成拼图效果,如下图所示:猛然一看,感觉很酷炫有木有.既然我们是专门搞图像的,那我们就来研究下如何使用Python-Opencv来实现上述效果吧.2 分析上述问题,主要目的就是将图像切成一块一块的正方形,考虑相邻正方形之间是否留有空白,以及是否对不能整除的图像进行空白填充,我们可以得到四种切分方式.2.1 不考虑间隔,忽略不能整除部分这种模式下,相邻正方形之间没有间隔,同时高度不能整除的部分直接被忽略掉.2.2 不考虑间隔,对不能整除部分进行空白原创 2021-09-15 19:35:00 · 980 阅读 · 0 评论 -
Python如何优雅地可视化目标检测框
1 引言随着计算机视觉算法工程师的内卷,从事目标检测的小伙伴们越来越多了.很多时候我们费了九牛二虎之力训练了一版模型,可是可视化出来的效果平淡无奇.是不是有点太不给力啦,作为计算机视觉工程师,我们是不是应该关注下如何优雅地可视化我们模型地检测结果呢?2 举个栗子最常用的可视化目标检测结果的就是我们所说的矩形框,矩形框的画法也可以分为好多中,我们以下图进行说明:我们以上图皮卡丘的矩形检测框为例,左上为我们常用的不带标签的输出框,右上为YOLO系列美化带标签后的矩形框,左下为四个角点美化后的矩形框原创 2021-09-03 20:20:27 · 10338 阅读 · 2 评论 -
Python图像处理之图像层叠
1 引言图像层叠(Image Stacking)是数字图像处理中的常用的一种技术,它针对同一场景拍摄多张图像,然后将这组图像层叠在一起来减小图像噪声.我们在低光照场景下拍摄的图像经常会带有噪声,为了将多张拍摄的图像进行堆叠,需要对不同图像上同一位置上像素进行校准.上图所示,左侧为我们在低光照下拍摄的图像,右侧图像我们使用8张图像进行层叠后的效果.2 实现本文需要对以下4张包含不同噪声的四张图进行层叠,所选择的样例图像如下所示:在进行图像层叠时,对同一位置来自不同图像的像素可以有多种处理方式,原创 2021-09-01 11:22:17 · 2733 阅读 · 2 评论 -
Python图像处理之透视变换
1 引言如果你想对图像进行校准,那么透视变换是非常有效的变换手段。透视变换的定义为将图像投影到一个新的视平面,通常也被称之为投影映射。2 公式一般来说,通用的图像变换公式如下所示:上述公式中,u,v代表原始图像坐标,x,y为经过透视变换的图片坐标,其中变换矩阵为3X3形式。进而可以得到:3 举例...原创 2021-08-29 14:18:57 · 18137 阅读 · 16 评论 -
Python制作酷炫的动画效果
1 引言利用Python的Matplotlib-Animation库可以制作酷炫的数学公式动画,官方教程可访问链接.本文为了清晰说明如何利用Animation类来实现动画效果,这里采用介绍一个点沿cos函数运动的例子来进行详细说明,其他复杂的动画效果也可据此原理进行类比扩展.cos函数点运动示例二阶钟摆示例2 动画实现这里主要以讲述上面的cos函数点运动的动画实现.2.1 准备背景在绘制动画前,我们需要将cos函数的背景图绘制出来. 这一步很简单,与我们平常使用matplotlib绘图一样.原创 2021-08-26 16:53:50 · 9083 阅读 · 2 评论 -
Python图像处理之十行代码搞定圆型头像生成
1 引言最近有小伙伴咨询怎么用python来制作一个好看的圆形头像,如下所示的效果:左侧为原图,右侧为我们圆形头像生成图。自从学了python来做图像处理,这种简单图像处理使用10行代码即可搞定。2 原理思考我们遇到的问题,换句大白话就是如何在图像里扣出一块圆形区域(ROI 感兴趣区域)。嗯嗯,比较直观的想法是采用mask掩膜的方式来实现了。3 代码...原创 2021-08-20 09:34:15 · 774 阅读 · 0 评论 -
【深度好文】Python图像处理二值图像投影量的计算和应用
1 引言投影法是沿着图像某个方向截面的灰度值累加计算量的集合,本文重点介绍二值图像水平垂直方向投影量的计算。2 水平投影2.1 计算步骤水平投影的一般计算步骤如下:1)将图像二值化,使物体为黑色,背景为白色2)遍历各行,依次判断每一列的像素值是否为黑色,统计该行所有黑色像素的个数,设该行共有M个黑色像素,则把该行从第一列到第M列置为黑色3)显示图像2.2 代码实现根据上述步骤,编写水平投影python代码如下所示:def get_horizon_project(img): h,原创 2021-08-18 22:08:12 · 2915 阅读 · 1 评论 -
【深度好文】Python图像处理之物体标识与面积测量
1 引言在二值图像f中,相互联结的白色像素的集合成为一个前景目标白色区域。本章对二值图像f内每个区域进行标记操作,进而求得区域的数目,并计算每个区域的面积和周长。物体标识的一般过程如下:从左到右,从上到下逐个像素扫描若该点为前景物体,则以该点为种子进行区域增长并标记。(区域增长算法可参考上节文章)重复上述过程,直至所有像素都被访问过为止。最后输出标记后的图像。2 物体标识代码实现1 ) 读入彩色图像执行灰度化和二值化def get_binary_img(img): # gray原创 2021-08-15 13:09:28 · 6000 阅读 · 7 评论 -
【深度好文】Python图像分割之区域增长法
1 引言区域增长法是一种已受到计算机视觉界十分关注的图像分割方法。它是以区域为处理对象的,它考虑到区域内部和区域之间的同异性,尽量保持区域中像素的临近性和一致性的统一。这样就可以更好地分辨图像真正的边界。基于区域的分割方法的关键在于定义一个一致性准则,用来判断两个邻接的区域是否可以合并,一致则将两区域合并,直到不能合并位置。区域增长的方法是在图像上选定一个种子点,记录下该点的灰度值,作为一致性判断的标准阈值,此外还需要定义一个标准差。算法的主要过程是,依次用图像的每一个像素的灰度值和标准阈值相减,判原创 2021-08-13 21:51:54 · 6182 阅读 · 0 评论 -
目标轮廓提取之边界跟踪法
1 引言上一篇我们介绍了目标轮廓提取法来提取目标轮廓,这一章节我们来介绍边界跟踪法。边界跟踪的定义为从图像中的一个边界点出发,然后跟觉某种判别准则搜索出下一个边界点,以此跟踪出目标边界。边界跟踪的一般步骤如下:1)确定边界的起始搜索点,起始点的选择很关键,对于某些图像,选择不同的起始点会导致不同的结果2)确定合适边界判别准则和搜索准则,判别准则主要用于判断一个点是不是边界点,搜索准则则知道如何搜索下一个边缘点。3)确定搜索的终止条件。2 算法原理边界跟踪算法原理:1)从左下角开始逐点扫描,当原创 2021-08-12 20:24:12 · 7856 阅读 · 2 评论 -
【深度好文】Python图像处理之目标物体轮廓提取
1 引言目标物体的边缘对图像识别和计算机分析十分有用。边缘可以勾画出目标物体,使观察者一目了然;边缘蕴含了丰富的内在信息(如方向、形状等),是图像识别中抽取图像特征的重要属性。轮廓提取是边界分割中非常重要的一种处理,同时也是图像处理的经典难题,轮廓提取和轮廓跟踪的目的都是获得图像的外部轮廓特征。2 原理二值图像的轮廓提取的原理非常简单,就是掏空内部点:如果原图中有一点为黑,且它的8个相邻点皆为黑色,则将该点删除。对于非二值图像,需要先进行二值化处理。轮廓提取的方法有很多,在这里我们介绍一种最基本、最简原创 2021-08-08 13:47:33 · 10803 阅读 · 21 评论