我们希望能用很少的几个特征代表一个图形,这些特征不因图形在图像中所在的位置、旋转角度、缩放比例的改变而改变,也不应受光照、噪点等影响。经过计算机视觉多年的发展,已经发现了很多这样的特征, 不变矩
就是其中一个。
统计学中的矩
; 图像的几何矩
将图像的像素坐标看作是二维随机变量,像素的灰度值看作是概率,就可以套用统计学中的矩作为图像的几何矩。
原点矩:M i j = ∑ x ∑ y x i y j I ( x , y ) M_{ij}=\sum_x \sum_y x^iy^jI(x,y)M i j =∑x ∑y x i y j I (x ,y )
中心矩:μ i j = ∑ x ∑ y ( x − x ^ ) i ( y − y ^ ) j I ( x , y ) , 其 中 ( x ^ , y ^ ) 为 图 形 的 质 心 ( 重 心 ) \mu_{ij}=\sum_x \sum_y (x-\hat x)^i(y-\hat y)^jI(x,y) \text ,其中(\hat x, \hat y)为图形的质心(重心)μi j =∑x ∑y (x −x ^)i (y −y ^)j I (x ,y ),其中(x ^,y ^)为图形的质心(重心)
- 零阶矩 M 00 = ∑ x ∑ y I ( x , y ) ,其中I(x,y)表示在(x,y)处的像素灰度值 M_{00}=\sum_x \sum_y I(x, y) \text {,其中I(x,y)表示在(x,y)处的像素灰度值}M 0 0 =∑x ∑y I (x ,y ),其中I(x,y)表示在(x,y)处的像素灰度值 零阶矩计算的是所有像素灰度的总和,类比统计学中的概率总和
- 一阶矩 { M 10 = ∑ x ∑ y x ∗ I ( x , y ) M 01 = ∑ x ∑ y y ∗ I ( x , y ) \begin{cases} M_{10}=\sum_x \sum_y xI(x, y) \ M_{01}=\sum_x \sum_y yI(x, y) \end{cases}{M 1 0 =∑x ∑y x ∗I (x ,y )M 0 1 =∑x ∑y y ∗I (x ,y ) 一阶矩计算出图像横纵坐标的加权和,权值即为该坐标像素。若想将权值归一化到(0,1)的区间,则可以将每个像素灰度值除以灰度总和,这样一阶矩就类似统计学中的数学期望了,该期望值是横纵坐标轴的加权平均值。该坐标点即为图形的质心(重心)坐标: { x c = M 10 / M 00 y c = M 01 / M 00 \begin{cases} x_c=M_{10} / M_{00} \ y_c=M_{01} / M_{00} \end{cases}{x c =M 1 0 /M 0 0 y c =M 0 1 /M 0 0
- 二阶矩 { M 20 = ∑ x ∑ y x 2 I ( x , y ) M 02 = ∑ x ∑ y y 2 I ( x , y ) M 11 = ∑ x ∑ y x y I ( x , y ) \begin{cases} M_{20}=\sum_x \sum_y x^2I(x, y) \ M_{02}=\sum_x \sum_y y^2I(x, y) \ M11=\sum_x \sum_y xyI(x,y) \end{cases}⎩⎪⎨⎪⎧M 2 0 =∑x ∑y x 2 I (x ,y )M 0 2 =∑x ∑y y 2 I (x ,y )M 1 1 =∑x ∑y x y I (x ,y ) 类比上述统计学中的k阶原点矩
- 二阶中心矩 { μ 20 = ∑ x ∑ y ( x − x c ) 2 I ( x , y ) μ 02 = ∑ x ∑ y ( y − y c ) 2 I ( x , y ) \begin{cases} \mu_{20}=\sum_x \sum_y (x-x_c)^2I(x, y) \ \mu_{02}=\sum_x \sum_y (y-y_c)^2I(x, y) \end{cases}{μ2 0 =∑x ∑y (x −x c )2 I (x ,y )μ0 2 =∑x ∑y (y −y c )2 I (x ,y ) 类比方差
Hu矩
中心距仅保证了平移不变性,若想要保证缩放不变性,则对中心矩归一化:
μ i j = μ i j μ 00 i + j 2 \mu_{ij}=\frac {\mu_{ij}}{\mu_{00}^\frac {i+j}{2}}μi j =μ0 0 2 i +j μi j
则 μ i j \mu_{ij}μi j 就同时具有平移和缩放不变性,但仍没有旋转不变性。为了解决该问题,又创造了Hu矩
Hu矩利用二阶和三阶中心矩导出下面七个不变矩组,他们都能同时保证平移、缩放、旋转不变性:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2yG1cT3-1650428282151)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3dc17d14-0030-46c0-b4dc-8108975a668d/Untitled.png)]
OpenCV计算矩
函数 moments()
用于计算几何矩(例如 m 10 , m 00 m_{10}, m_{00}m 1 0 ,m 0 0 等,由此可计算出质心),函数 HuMouents()
用于计算Hu矩。以下为七个不变矩的实际效果(为了便于比较,结果都使用 log 输出):
可以直接使用 matchShapes()
方法来对不两个图形Hu矩的差值,根据该差值可以判断是不是同一个图形。差值越小则越接近。
参考 我有点酷
参考:
https://www.learnopencv.com/shape-matching-using-hu-moments-c-python/
https://www.cnblogs.com/ronny/p/3985810.html
https://www.cnblogs.com/wyuzl/p/7846384.html
https://www.jianshu.com/p/3cb0b97da76e
Original: https://blog.csdn.net/zouh613/article/details/124294439
Author: HuntZou
Title: 图像矩的理解及作用
相关阅读1
Title: Tensorflow、cuda和cudnn安装与下载(详细)
教程千千万,看这一篇就够了
先安装好anaconda,可从该网站下载:https://repo.anaconda.com/archive/
Tensorflow、cuda和cudnn在本机上折腾来折腾去,将其安装到虚拟环境中他不香吗?后期维护多方便
这里以 cuda=10.1.168 cudnn=7.6.0 tensorfolw_gpu=2.3.0为例
1、创建虚拟环境(这里以python3.7为例):name可自定义
conda create -n name python=3.7
2、激活虚拟环境:
conda activate name
3、寻找可用的cudatoolkit套件:
conda search cudatoolkit
4、寻找可用的cudnn套件:
conda search cudnn
5、安装cudatoolkit、cudnn:
conda install cudatoolkit=10.1.168 cudnn=7.6.0
也可从下面这个连接中找到其他对应的cuda、cuda和tensorflow版本(安装你想要的版本)
Build from source | TensorFlow
6、使用pip命令安装gpu版本的tensorflow(注意使用conda命令时有时找不到gpu版本的tensorflow,原因是conda和pip所使用的源不一样)
pip install tensorflow_gpu==2.3.0
7、安装完成后:进入python并输入以下命令进行测试
import tensorflow as tf
if tf.test.is_gpu_available()==True:
print('Tensorflow版本可用')
if tf.test.is_gpu_available()==False:
print('Tensorflow版本不可用')
输出下面这行表示环境配置成功: Perfect
参考:
conda虚拟环境创建、安装cuda cudnn_lzkzls的博客-CSDN博客_conda虚拟环境安装cuda
2021最新:TensorFlow各个GPU版本CUDA和cuDNN对应版本整理(最简洁)_K1052176873的博客-CSDN博客_cuda tensorflow版本对应
如何查看tensorflow-gpu是否可用_lidichengfo0412的博客-CSDN博客_tensorflow检查gpu是否能用
Original: https://blog.csdn.net/weixin_41115760/article/details/122027311
Author: Bit之舞
Title: Tensorflow、cuda和cudnn安装与下载(详细)
相关阅读2
Title: 合合信息获中国图象图形学学会科技进步奖二等奖
图片来源于中国图像图形学学会CSIG 公众号
去年12 月,中国图象图形学学会(CSIG)公布了2021年度自然科学奖、技术发明奖、科技进步奖评选结果。其中,合合信息牵头与华南理工大学共同完成的"复杂场景文档图像识别与理解关键技术及应用"荣获2021年度中国图象图形学学会科技进步奖二等奖。据悉,此次成果奖项评选需满足三方面条件,包括技术创新性突出,经济效益或者社会效益显著和推动行业科技进步作用明显。基于这个情况我们了解一下奖项背后的团队与技术研发情况。
1、获奖团队介绍:
本项目由上海合合信息科技股份有限公司牵头,依托于上海市领军人才培养计划 和合合信息-华南理工大学文档图像分析识别与理解联合式实验室,共同开展面向复杂多场景文字识别理解及应用的研究工作,多维度来研究解决文档图像的文字识别智能感知与结构化认知理解问题。
项目第一完成人是上海市领军人才,合合信息董事长镇立新博士。镇立新博士主要负责整体策划了项目的研究总体框架、产品技术方案及技术路线,确立了整个项目的研发和应用方向,主持了整个项目的研发和市场应用拓展。第二完成人是华南理工大学金连文教授,金连文教授主要负责参与了项目总体技术创新路线的整体方案规划及学术理论研究,提出了深度学习场景文字检测与识别、无约束手写体文字识别等新方法。
项目其他完成人均为合合信息的核心研发人员和华南理工大学教授,他们在文档图像识别与理解、计算机视觉、人工智能领域均有着十多年的研发经验,,有较为专业的行业理解与技术成果,全部完成人简介如下:
姓名
文化程度
所学专业
工作单位
对成果的创造性贡献
镇立新
博士
模式识别
上海合合信息科技股份有限公司
整体策划了项目的研究总体框架、产品技术方案及技术路线,参与研究了多场景手写及文字识别新方法、文本图像去噪增强方法,参与设计及研发了名片全能王、扫描全能王等产品。
金连文
博士
计算机视觉
华南理工大学
参与了项目总体技术创新路线的整体方案规划及学术理论研究,提出了深度学习场景文字检测与识别、无约束手写体文字识别等新方法。
罗希平
博士
计算机科学
上海合合信息科技股份有限公司
从0 到1 的实现了整套名片识别和OCR 识别算法,该算法实现了一种速度快,内存需求小,准确率高的多语种OCR 算法。该算法在项目中作为底层核心识别技术之一得到了广泛应用。
龙腾
博士
模式识别
上海合合信息科技股份有限公司
研发了基于手机移动端摄像头的扫描图像色彩还原与增强技术、基于手机移动端摄像头的文档检测定位与三维空间矫正技术、新一代基于深度学习场景文字识别的先进文字识别技术。
陈青山
硕士
计算机科学
上海合合信息科技股份有限公司
1、OCR移动端算法及工程化
2、移动App(名片全能王,扫描全能王)多平台开发及产品化、运营推广工作
3、手机厂商OCR技术授权及集成化工作对"名片全能王,扫描全能王、证照票据OCR 引擎"等产品的设计、实现及运营推广做出了重大贡献。
丁凯
博士
人工智能
上海合合信息科技股份有限公司
独立并带领团队研发核心底层OCR算法技术。作为核心研发人员研发了手写识别、名片识别,证照识别和通用文本识别等核心算法,并作为核心技术应用到多项产品和业务中。
郭丰俊
博士
计算机视觉
上海合合信息科技股份有限公司
1、实现第一代高精度手机版银行卡识别,被三星电子应用于其支付系统,并被其他厂商广泛使用;
2、结合深度学习与经典图像处理/模式识别算法,实现了业界领先水平的表格检测与识别系统。
高学
博士
模式识别
华南理工大学
提出了多项OCR识别理论新方法,包括基于卷积神经网络的相似手写汉字识别方法、基于局部线性分析的手写汉字特征降维与优化方法、基于OCR的票据自动识别与处理方法。
薛洋
博士
信号与信息处理
华南理工大学
参与了基于深度学习的场景文字检测与识别、无约束手写体文字识别等学术理论的研究及算法研究。
张彬
硕士
计算机视觉
上海合合信息科技股份有限公司
开发名片全能王 iOS版;参与扫描全能王开发;OCR深度学习私有化训练平台;负责公司主要产品票据机器人和证件机器人研发,大幅提升了复杂票据和证件的识别率。
2、项目介绍:
复杂多场景文档图像识别与理解关键技术及应用是基于新一代人工智能基础理论及核心技术,开展面向复杂多场景文字识别及理解的研究工作,多维度来研究解决文档图像的文字识别智能感知与结构化认知理解问题。针对OCR关键共性技术问题,从复杂场景文档图像智能处理、复杂场景文字检测、文复杂场景字识别理论与技术、文档结构化理解等方面开展OCR关键共性核心技术研究,来解决复杂场景下新一代文字识别中得到"看不清、看不准、认不全、难理解"等四个方面的关键技术问题。项目组提出了多项文档识别与理解新方法,构建了面向复杂多场景文档图像OCR的技术方法体系,取得了具有自主知识产权的创造性科技成果,为智慧金融、智慧办公、智慧城市、智能制造、电子商务等多应用场景的数字化转型升级提供关键核心技术支撑及产品解决方案。
项目研发过程中产生了相关核心技术累计获得发明专利授权82项(其中国际专利授权26项),获得计算机软件著作权30项,发表代表性学术论文20余篇。近三年获得国际权威学术竞赛冠军12次。相关核心技术应用在合合信息旗下产品扫描全能王、名片全能王产品,产品覆盖了全球百余个国家和地区的亿级用户,全球用户累计首次下载量合计超过6亿。
3、在科研过程中,有没有什么好的方法可以推荐给大家?
本项目的一个显著特点就是既需要基础理论的创新和突破,也需要与实际用户需求和业务场景相契合的技术突破,最终形成自主知识产权的核心技术和规模化的产业应用。
在基础理论创新方面,一方面合合信息自身拥有一个由上海市领军人才镇立新博士领衔底层技术研发团队,专注于底层理论技术的创新和突破,同时为了进一步提升基础理论水平,合合信息与华南理工大学金连文教授合作,共同成立了合合信息-华南理工大学文档图像分析识别与理解联合实验室,充分利用顶尖高效的科研力量,提升基础理论水平,为后续的技术创新和突破提供理论基础。
在技术创新和落地方面,注重对用户需求和业务场景的理解,思考如何通过技术突破来解决实际用户和业务场景下的问题。例如我们的扫描全能王,名片全能王,"票据机器人"、"证照机器人"、"财报机器人"等多个产品都是基于用户面临的拍照环境多样导致文档图像形变、背景干扰、书写风格多样、文字方向多样等实际的问题,通过技术创新,提出了多项文档识别与理解新技术,解决了用户的痛点和问题,从而产生了多项科技应用成果。相关核心技术累计获得发明专利授权82项(其中国际专利授权26项),获得计算机软件著作权30项,发表代表性学术论文20余篇。近三年获得国际权威学术竞赛冠军12次。同时该技术创新也获得了各行各业的认可,银行、证券、保险、政府、物流、制造、地产、零售等近30个行业的众多头部客户与合合信息开展合作,采购相关技术应用,帮助企业实现数字化与智能化的转型升级。
4、在项目的研究过程中有遇到什么困难吗?是如何解决的?
项目研究中的主要困难在于两个方面,一个是如何在基础理论创新上取得突破,一个是实际用户需求和业务场景的及其复杂多样,如何通过技术突破满足甚至超越用户预期。
我们知道,基础理论创新是一件非常困难的事情,可能面临长时间无法取得成果和突破。针对这个难题,我们一方面基于公司对文档图像识别与理解领域内的深刻理解以及对该领域前沿技术的持续跟进,同时通过联合实验室和这个领域内顶尖的高校教授一起研究探索,把握好基础理论创新的大方向,确保理论创新始终在正确的方向上。其次就是坚持长期主义,合合信息从创立开始就一直保留着一个底层理论技术研发团队,同时2 010 年就和华南理工大学签署战略合作协议,再理论创新领域持续长期投入,最终形成了2 0 多篇高水平论文和超过8 0 项的核心技术专利。
第二个困难就是用户需求和业务场景的极度复杂,在核心技术研发上,需要面对文档图像背景干扰,图像形变,字体风格多样,文字重叠,书写潦草,类型和版式多样等各种难题;再数据上,我们需要支持5 0 多种语言,却缺乏相关语言的各种类型的文档图像数据进行训练;在应用上,会面临不同终端硬件环境,操作系统平台,型号差异造成的影响。针对这样的问题,我们首先是深刻的理解用户需求和场景,找到背后的核心问题,然后针对核心问题进行技术攻关,通过长期持续的技术创新解决一个个用户需求和实际场景中的关键问题,最终形成了像"扫描全能王","名片全能王"这一类深受用户欢迎的产品和服务。
目前合合信息的技术服务已经覆盖了银行、证券、保险、物流、制造等行业的众多客户,欢迎大家登录到TextIn - MobileSDK 进行申请使用。
Original: https://blog.csdn.net/INTSIG/article/details/124023450
Author: 合合技术团队
Title: 合合信息获中国图象图形学学会科技进步奖二等奖
相关阅读3
Title: 记录一次ubuntu18云服务器安装tensorflow2 cpu版过程
- 安装cuda
登录进自己的远程Ubuntu服务器shell中,通过lsb_release -a查看系统版本,如下所示。可以看到Ubuntu是18.04的。
ubuntu@VM-0-10-ubuntu:~/anaconda3/bin$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
然后通过uname -a指令查看系统架构,如下所示,可以看到架构是x86的。
ubuntu@VM-0-10-ubuntu:~/anaconda3/bin$ uname -a
Linux VM-0-10-ubuntu 4.15.0-159-generic #167-Ubuntu SMP Tue Sep 21 08:55:05 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
进入 CUDA Toolkit 11.5 Update 1 Downloads | NVIDIA Developer 中。进入网页中根据上面的信息进行选择。
出现如图安装步骤教程,接下来只需要按照网页中的步骤进行安装即可。
- anaconda 安装
为了让python版本管理更加方便,使用anaconda进行python环境管理。貌似ubuntu的apt没法直接install anaconda,所以在清华软件镜像网站上下载,Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror Index of /anaconda/archive/ | 清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务,帮助用户更方便地获取开源软件。本镜像站由清华大学 TUNA 协会负责运行维护。https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/;进入网页后,点击进行下载。
下载完成后通过ftp移动到云服务器上。
运行sh Anaconda3-4.0.0-Linux-x86_64.sh进行安装,过程较为漫长,耐心等待。
按下enter或者yes均可,然后会遇到
最后,提示信息"Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]",输入no;
这时候在控制台输入conda是无法识别的,因为anaconda还没有设置到环境变量中
通过 sudo vi ~/.bashrc 指令进行环境变量配置,在.bashrc 文件末尾添加:
export PATH="/home/ubuntu/anaconda3/bin:$PATH"
然后:wq! 退出文件编辑并保存,通过 source ~/.bashrc 指令让文件配置生效。
配置OK后就可以通过输入conda指令测试安装是否成功。
ubuntu@VM-0-10-ubuntu:~$ conda
usage: conda [-h] [-V] command ...
conda is a tool for managing and deploying applications, environments and packages.
Options:
positional arguments:
......(省略)
接下使用conda创建虚拟环境:
conda create -n tensorflow2 python=3.7
代码中 tensorflow2 是环境名字,取啥都行,后面python=3.7是python版本,建议安装3.7+的版本,貌似tensorflow2.7是需要python3.7+的。安装需要等待一段时间。
安装完成后使用source activate tensorflow2(上面自己取的环境名)来激活环境。激活后控制台会在前面显示:
(tensorflow2) ubuntu@VM-0-10-ubuntu:~$
这样环境就激活成功了,另外可以使用source deactivate tensorflow2取消激活。
- 安装tensorflow
因为前面anaconda安装以及环境配置成功后可能直接输入python还不是anaconda的python环境,所以为了保守起见,我这儿是cd到anaconda的bin路径中通过pip安装(anaconda文件夹下有bin文件夹,bin中就放着python、pip、conda等软件)。
注意路径、路径、路径!
如果你想确认自己所使用的python和pip到底是不是tensorflow的pip和python,你可以选择pip list查看库进行区分或者直接进入python,查看python版本。
(tensorflow) ubuntu@10-13-131-146:~/anaconda3/bin$ pip install tensorflow
安装完成之后,使用python环境进行测试
(tensorflow) ubuntu@10-13-131-146:~/anaconda3/bin$ python
Python 3.7.11 (default, Jul 27 2021, 14:32:16)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>>
如果没有什么警告或者报错的话,说明安装非常成功,可以使用了tensorflow了。
但是也有可能前面的操作有误,会出现警告:
(tensorflow) ubuntu@10-13-131-146:~/anaconda3/bin$ python
Python 3.7.11 (default, Jul 27 2021, 14:32:16)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
2022-01-06 00:22:03.302140: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2022-01-06 00:22:03.302285: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
>>>
警告中提到:libcudart.so.11.0,说明是cuda版本安装有误,需要安装cuda11的,回到第一步;如果是libcudart.so.10.0,那就安装cuda10的,也在第一步中的链接网站中,自己找吧,百度也有。
ubuntu中anaconda的环境真是一个麻烦的事儿,直接输入python可能会指向系统默认的python,pip也可能指向系统默认的pip,也许可以考虑将系统的python卸载掉。
教程到这儿就结束了,有任何问题请在评论区留言,有空就回复。
Original: https://blog.csdn.net/weixin_44219762/article/details/122334566
Author: cquptcqs
Title: 记录一次ubuntu18云服务器安装tensorflow2 cpu版过程