图像基础算法学习笔记
目录
概要
一、图像采集
二、图像标注
四、图像几何变换
五、图像边缘检测
Sobel算子
Scharrt算子
Laplacian算子
Canny边缘检测
六、形态学转换
概要
参考书籍:《机器视觉与人工智能应用开发技术》 廖建尚,钟君柳 出版时间:2024-02-01
- 图像采集
- 图像标注:绘制直线、矩阵、圆形、椭圆和多边形
- 图像灰度转换:灰度化、二值化等图像转换方法
- 图像几何变换:图像旋转、图像镜像、图像缩放、图像透视等方法
- 图像边缘检测:Sobel算子、Scharr算子、Laplacian算子、Canny算子等边缘检测算子
- 形态学转换:图像腐蚀、膨胀、开运算、闭运算等形态学转换方法
- 图像轮廓提取:提取轮廓的凸包、外接矩形、最小外接矩形、最小外接圆等方法
- 直方图均衡:绘制直方图、均衡化直方图、自适应均衡化直方图等方法
- 模板匹配:模板匹配方法
- 霍夫变换:直线检测、圆检测等方法
- 图像矫正:图像矫正方法
- 图像添加文字和水印:图像添加文字和水印的方法
- 图像去噪:方框滤波、均值滤波、高斯滤波、高斯双边滤波、中值滤波等消除噪声方法
一、图像采集
图像的基本概念
- 图像是由一个个点组成的,每一个点即一个像素。像素是图像的基本单元,每个像素都由明确数值来表示当前坐标点的颜色或灰度。
- 在数字设备中,图像是由像素组成的二维或三维矩阵,常见的图片格式包括:JPEG、PNG、BMP等。
- 视频则是由多张图片组成的序列,由于人眼存在视觉暂留效应,当图像以每秒超过24帧的速率显示时,静态画面会呈现出平滑连续变化的效果,这样的连续画面即为视频。常见的视频格式包括AVI、MP4、MOV等。
- 图像分辨率,是指每英寸长度内有多少个像素,一张1920x1080的图像,1920是指该图像额宽度方向上有1920个像素,1080是指该图像的高度方向上有1080个像素。
OpenCV视频处理接口:VideoCapture;
图像处理接口:imread、imshow、imwrite
二、图像标注
画直线(cv2.line):根据给出的起点和终点绘制两点之间的线条
画矩形(cv2.rectangle):根据矩形的左上角位置坐标和右下角位置坐标绘制矩形
画圆形(cv2.circle):根据给定的圆心和半径绘制圆
画椭圆(cv2.ellipse)
四、图像几何变换
图像旋转(cv2.warpAffine):以图像的中心为原点旋转一定的角度,即将图像上的所有像素都旋转一个相同的角度。图像经过旋转之后,其位置会发生变化,旋转后既可以把转出显示区域的图像截去,也可以扩大显示区域的图像范围以显示图像的全部内容。
图像镜像(cv2.flip):是一种与人们日常生活密切相关的变换,图像镜像是指原始图像相对于某一参照面旋转180°的图像。镜像变换又称为对称变换,分为水平镜像、垂直镜像、对角镜像等。镜像变换后,图像的宽和高不变。
水平镜像:以图像的垂直中轴线为中心,将图像分为左右两部分后进行对称变换。
垂直镜像:以图像的水平中轴线为中心,将图像分为上下两部分后进行对称变换。
对角镜像:将图像以水平中轴线和垂直中轴线的交点为中心进行对称交换,相当于将图像先后进行水平镜像和垂直镜像。
图像缩放(cv2.resize):将指定的图像在x方向和y方向按相同的比例进行缩放,从而获得一幅新的图片,称为全比例缩放。
如果x方向和y方向的缩放比例不同,则图像的比例缩放会改变原始图像像素间的相对位置,产生几何畸变。
在图像缩放过程中,涉及图像数据的删除与增加。若比例缩放所产生的图像中的像素在原始图像中没有相对应的像素时,特别在图像放大时,则需要考虑如何在放大后的空隙中加入新的图像颜色数据,增加颜色数据的方法主要根据周围相邻像素的颜色值进行插值计算。主要有3种插值方法:最近邻插值法、双线性插值方法、三次内插法。
- 最近邻插值法:新增加像素的灰度等于距它最近的像素的灰度。
- 双线性插值方法:新增加像素的灰度由其周围4个像素的灰度决定。
- 三次内插法:新增加的像素不仅考虑直接邻近点对它的影响,还需要考虑周围16个邻近灰度对它的影响。
五、图像边缘检测
边缘检测是图像处理和计算机视觉中的基本应用,边缘检测的目的是标识数字图像中亮度变化明显的点。
图像属性的显著变化通常反应了属性的重要事件和变化,通过图像边缘检测可以大幅地减少数据量,并剔除不想关的信息,保留了图像重要的结构属性。
经典的图像边缘检测算子有:Sobel算子、Scharr算子、Laplacian算子、Canny算子。
Sobel算子
一种离散的微分算子,该算子结合了高斯平滑和微分求导运算,利用局部差分寻找边缘,计算结果是梯度的一个近似值。Sobel算子利用周围邻域8个像素来估计中心像素的梯度,但Sobel算子认为靠近中心的像素应该给予更高的权重。Sobel算子的边缘检测卷积核如下图:
Scharrt算子
Scharr算子与Sobel算子的运算方式类似,分别计算x方向或y方向的图像差分。可以说,Scharr算子是Sobel算子的改进。Scharr算子运算准确度更高、效果更好。Scharr算子的边缘检测卷积核如下图:
Laplacian算子
Laplacian算子是图像邻域内像素灰度差分计算的基础,是一种通过二阶微分推导图像邻域增强算法。
Laplacian算子的基本思想是当邻域的中心像素灰度低于它所在邻域内的其他像素的平均灰度时,此中心像素的灰度应该进一步降低;当高于时进一步提高中心像素的灰度,从而实现锐化处理。二阶微分卷积核如下图:
Canny边缘检测
Canny边缘检测是当今最流行的边缘检测方法之一,非常强大和灵活,该方法主要过程如下:
- 降噪。原始图像的像素通常会导致噪声边缘,因此在计算边缘之前减少噪声很重要。在Canny边缘检测中,高斯模糊过滤器用于从本质上去除或最小化可能导致不良边缘的不必要细节。
- 计算图像的强度梯度。图像平滑(模糊)后,先使用Sobel算子进行水平和垂直过滤,再使用这些过滤操作的结果来计算每个像素的强度梯度。
- 抑制假边。在降低噪声和计算强度梯度后,使用一种称为边缘非最大抑制的技术来过滤掉不必要的像素(实际上可能并不构成边缘),因此要在正负梯度方向上将每个像素与其相邻的像素进行比较。如果当前像素的梯度大于其相邻像素,则保持不变;否则将当前的梯度设置为零。
- 滞后阈值。在Canny边缘检测的最后中,对梯度与两个阈值进行比较。
六、形态学转换
常用的形态学转换有四种:腐蚀、膨胀、开运算、闭运算。
腐蚀(cv2.erode):一种消除边界点,使边界向内部收缩的过程。腐蚀的目的是把目标区域范围“变小”,可以用来消除小且无意义的物体。
膨胀(cv2.dilate):膨胀和腐蚀是一对相反的操作,将与物体接触的所有背景点合并到该物体中,使物体边界向外部扩张。
开运算(cv2.morphologyEx):先腐蚀后膨胀的过程称为开运算,用来消除小物体、在纤细点处分离物体,可以在不明显改变物体表面积的情况下平滑物体的边界。一般会使对象的轮廓变得光滑、断开狭窄的间隙和消除细的突出物。
闭运算(cv2.morphologyEx):先膨胀后腐蚀的过程称为闭运算,用来填充物体内的细小空洞、连接邻近物体,可以在不明显改变物体表面积的情况下平滑物体的边界。
相关文章:
图像基础算法学习笔记
目录 概要 一、图像采集 二、图像标注 四、图像几何变换 五、图像边缘检测 Sobel算子 Scharrt算子 Laplacian算子 Canny边缘检测 六、形态学转换 概要 参考书籍:《机器视觉与人工智能应用开发技术》 廖建尚,钟君柳 出版时间:2024-…...
【Elasticsearch】01-ES安装
1. 安装 安装elasticsearch。 docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--networ…...
网络性能测试
一、iperf网络性能测试工具 测试udp丢包率 在服务器启动 iperf 服务端 iperf -p 9000 -s -u -i 1参数说明: -p : 端口号 -s : 表示服务端 -u : 表示 udp 协议 -i : 检测的时间间隔(单位,秒) 在客户端,启动 iperf 客户端 iperf -c xxx.xxx.14…...
docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
无数次的拉镜像让人崩溃: rootnode11:~/ragflow/docker# more rag.sh #export HTTP_PROXYhttp://192.168.207.127:7890 #export HTTPS_PROXYhttp://192.168.207.127:7890 #export NO_PROXYlocalhost,127.0.0.1,.aliyun.com docker compose -f docker-compose-gpu-C…...
esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器
MQTT介绍 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,旨在设备之间进行通信,尤其是在网络条件较差的情况下。MQTT v3.1.1 和 MQTT v5 是该协议的两个主要版本。 MQTT v3.1.1: 优点ÿ…...
OceanBase 升级过程研究(4.2.1.6-4.2.1.8)
模拟业务 使用benchmark加载10仓数据模拟业务场景 升级方法 使用滚动升级方式来进行OB升级。该方法前提是OB集群必须满足官方规定的高可用架构(如果 Zone 个数小于 3,滚动升级时则无法构成多数派), 滚动升级的原理就是轮流完成每个ZONE的升级工作,由于…...
ubuntu下怎么设置机器程序开机自启?
在 Ubuntu 中,可以通过多种方法设置程序或脚本在系统启动时自动运行。以下是几种常见方法: 方法 1:使用 crontab crontab 是一个定时任务管理工具,可以用来设置程序在开机时自动运行。 1. 打开终端,编辑当前用户的 …...
Cesium 相机系统
Cesium 的相机系统是其 3D 地球渲染引擎的重要组成部分,它控制用户在虚拟地球上的视图和交互体验。Cesium 的相机系统具备灵活性和强大的功能,允许开发者自定义视图、导航和交互方式。以下是 Cesium 相机系统的主要特点和功能: 1. 相机的基本…...
数据结构(基本概念及顺序表——c语言实现)
基本概念: 1、引入 程序数据结构算法 数据: 数值数据:能够直接参加运算的数据(数值,字符) 非数值数据:不能够直接参加运算的数据(字符串、图片等) 数据即是信息的载…...
ZYNQ程序固化——ZYNQ学习笔记7
一、ZYNQ启动过程 二、 SD卡启动实操 1、对ZYNQ进行配置添加Flash 2、添加SD卡 3、重新生成硬件信息 4、创建vitis工程文件 5、勾选板级支持包 6、对系统工程进行整体编译,生成两个Debug文件,如图所示。 7、插入SD卡,格式化为 8、考入BOOT.…...
labview使用报表工具从数据库导出数据
之前写了一篇labview从数据库导出数据到excel电子表格,但是是基于调用excel的activeX控件,有时候会有一些bug,就比如我工作机就无法显示方法,后面大哥指点才知道没有的原因是excel安装不完整。像我的工作机就没有这个选项。就需要…...
#define定义宏(2)
大家好,今天给大家分享两个技巧。 首先我们应该先了解一下c语言中字符串具有自动连接的特点。注意只有将字符串作为宏参数的时候才可以把字符串放在字符串中。 下面我们来讲讲这两个技巧 1.使用#,把一个宏参数变成对应的字符串。 2.##的作用 可以把位…...
CentOS网络配置
上一篇文章:VMware Workstation安装Centos系统 在CentOS系统中进行网络配置是确保系统能够顺畅接入网络的重要步骤。本文将详细介绍如何配置静态IP地址、网关、DNS等关键网络参数,以帮助需要的人快速掌握CentOS网络配置的基本方法和技巧。通过遵循本文的…...
基于vue框架的的网上宠物交易管理系统46sn1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
系统程序文件列表 项目功能:用户,宠物分类,宠物信息 开题报告内容 基于Vue框架的网上宠物交易管理系统开题报告 一、研究背景 随着互联网技术的飞速发展和人们生活水平的提高,宠物已成为许多家庭的重要成员。宠物市场的繁荣不仅体现在实体店的遍地开…...
MySQL数据库:SQL语言入门 【2】(学习笔记)
目录 2,DML —— 数据操作语言(Data Manipulation Language) (1)insert 增加 数据 (2)delete 删除 数据 truncate 删除表和数据,再创建一个新表 (3…...
MySQL深度剖析-索引原理由浅入深
什么是索引? 官方上面说索引是帮助MySQL高效获取数据的数据结构,通俗点的说,数据库索引好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度。 索引是对数据库表中一列或多列的值进…...
路径规划——RRT-Connect算法
路径规划——RRT-Connect算法 算法原理 RRT-Connect算法是在RRT算法的基础上进行的扩展,引入了双树生长,分别以起点和目标点为树的根节点同时扩展随机树从而实现对状态空间的快速搜索。在此算法中以两棵随机树建立连接为路径规划成功的条件。并且&…...
数据科学与SQL:如何计算排列熵?| 基于SQL实现
目录 0 引言 1 排列熵的计算原理 2 数据准备 3 问题分析 4 小结 0 引言 把“熵”应用在系统论中的信息管理方法称为熵方法。熵越大,说明系统越混乱,携带的信息越少;熵越小,说明系统越有序,携带的信息越多。在传感…...
Redis/Codis性能瓶颈揭秘:网卡软中断的影响与优化
目录 现象回顾 问题剖析 现场分析 解决方案 总结与反思 1.调整中断亲和性(IRQ Affinity): 2.RPS(Receive Packet Steering)和 RFS(Receive Flow Steering): 近期,…...
微知-DOCA ARGP参数模块的相关接口和用法(config单元、params单元,argp pipe line,回调)
文章目录 1. 背景2. 设置参数的主要流程2.1 初始化2.2 注册某个params的处理方式以及回调函数2.4 定义好前面的params以及init指定config地点后start处理argv 3. 其他4. DOCA ARGP包相关4.1 主要接口4.2 DOCA ARGP的2个rpm包4.2.1 doca-sdk-argp-2.9.0072-1.el8.x86_64.rpm4.2.…...
PostgreSQL高可用Patroni安装(超详细)
目录 一 安装Patroni 0 Patroni 对Python的版本要求 1 卸载原来的Python 3.6 版本 2 安装Python 3.7 之上版本 3 安装依赖 psycopg3 4 安装patroni 5 卸载 patroni 二 安装ETCD 1 使用 yum 安装 etcd 2 etcd 配置文件 3 管理 etcd 4 设置密码 5 常用命令 三 安装…...
mcu之,armv7架构,contex-M4系列,时钟树,中断,IO架构(一)
写这篇文章的目的,是记录一下arm架构的32mcu,方便记忆芯片架构原理,方便我展开对,BootLoader的研究。 arm架构,时钟树,先做个记录,有空写。...
论文解析:基于区块链的去中心化服务选择,用于QoS感知的云制造(四区)
目录 论文解析:基于区块链的去中心化服务选择,用于QoS感知的云制造(四区) 基于区块链的去中心化云制造服务选择方法 一、核心内容概述 二、核心创新点及原理与理论 三、实验与理论分析 PBFT(实用拜占庭容错) 论文解析:基于区块链的去中心化服务选择,用于QoS感知的…...
详细解析STM32 GPIO引脚的8种模式
目录 一、输入浮空(Floating Input):GPIO引脚不连接任何上拉或下拉电阻,处于高阻态 1.浮空输入的定义 2.浮空输入的特点 3.浮空输入的应用场景 4.浮空输入的缺点 5.典型配置方式 6.注意事项 二、输入上拉(Inpu…...
【hacker送书第16期】Python数据分析、挖掘与可视化、AI全能助手ChatGPT职场工作效率提升技巧与案例
解锁数据分析与AI应用的双重秘密:全面推广《Python数据分析、挖掘与可视化从入门到精通》与《AI全能助手ChatGPT职场工作效率提升技巧与案例》 前言Python数据分析、挖掘与可视化从入门到精通💕内容简介获取方式 AI全能助手ChatGPT职场工作效率提升技巧与…...
翼鸥教育:从OceanBase V3.1.4 到 V4.2.1,8套核心集群升级实践
引言:自2021年起,翼鸥教育便开始应用OceanBase社区版,两年间,先后部署了总计12套生产集群,其中核心集群占比超过四分之三,所承载的数据量已突破30TB。自2022年10月,OceanBase 社区发布了4.2.x 版…...
WebGIS开发中不同坐标系坐标转换问题
在 JavaScript 中,使用 proj4 库进行坐标系转换是一个非常常见的操作。proj4 是一个支持多种坐标系的 JavaScript 库,提供了从一种坐标系到另一种坐标系的转换功能。 以下是使用 proj4 进行坐标系转换的基本步骤: 1. 安装 proj4 你可以通过…...
【青牛科技】视频监控器应用
1、简介: 我司安防产品广泛应用在视频监控器上,产品具有性能优良,可 靠性高等特点。 2、图示: 实物图如下: 3、具体应用: 标题:视频监控器应用 简介:视频监控器工作原理是光&#x…...
AWTK-WIDGET-WEB-VIEW 实现笔记 (3) - MacOS
MacOS 上实现 AWTK-WIDGET-WEB-VIEW 有点麻烦,主要原因是没有一个简单的办法将一个 WebView 嵌入到一个窗口中。所以,我们只能通过创建一个独立的窗口来实现。 1. 创建窗口 我对 Object-C 不熟悉,也不熟悉 Cocoa 框架,在 ChatGPT…...
PgSQL即时编译JIT | 第1期 | JIT初识
PgSQL即时编译JIT | 第1期 | JIT初识 JIT是Just-In-Time的缩写,也就是说程序在执行的时候生成可以执行的代码,然后执行它。在介绍JIT之前,需要说下两种执行方式:解释执行和编译执行。其中解释执行是通过解释器,将代码逐…...
在线上传单页网站/seo优化工具
矩阵的LU分解 > A 单位下三角矩阵 * 上三角矩阵 将矩阵的LU分解用于非方阵 > 在另一个情况下 ,如果A是6x4的矩阵> 处理方法一致。 举例 > 将U化为 单位上三角矩阵 > 引入对角矩阵 D > 综上 A L * D * U 举例 A 执行高斯消元法 > …...
在北京哪家公司建网站合适/通州优化公司
二毛道家源流经典之一《黄帝内经》主张“食为性命之基”,并提倡“五谷为养,五果为助,五畜为益,五菜为充”。如果饮食不当,五味不调,饮食亦为疾病之源,主张通过对食物的挑选、搭配,达…...
山东网站建设推广/国外免费舆情网站有哪些软件
一切都是花里胡哨,苦中作乐。———————————————彩色缩进———————————————效果图插件名称: indent-rainbow安装使用:搜索安装,无脑直接使用。———————————————自定义背景图———————…...
做网站要坚持/南昌seo快速排名
找过网上很多方法和办法发现都不行,后头才发现是浏览器的原理。/汗 <embed src"音乐文件目录要带.mp3" hidden"true" autostart"true" loop"true" />该方法只适用于IE浏览器,我使用80.0.3987.149…...
做动态网站有哪些技术路线/长沙seo顾问
ASP.NET MVC小论 2008-12-04 11:11 by T2噬菌体, 8052 visits, 网摘, 收藏, 编辑 摘要:ASP.NET MVC作为微软官方的.NET平台下MVC解决方案,自诞生起就吸引了众多.NET平台开发人员的眼球。在经历了漫长Preview后,上个月微软终于发布了其beta版。…...
建设asp网站视频教程/广东东莞大益队
self.findChild(QComboBox, "name") self.findChild(QComboBox, "name") self is class first parameter is Type second parameter is Id String ------ 通吃: self.findChild(QWidget, "name")...