草庐IT

Opencv 图像处理:数字图像的必会知识

timerring 2023-03-28 原文
本文已收录于Opencv系列专栏: ​​深入浅出OpenCV​​ ,专栏旨在详解Python版本的Opencv,为计算机视觉的开发与研究打下坚实基础。免费订阅,持续更新。

数字图像

1.数字图像概念

数字图像:

  • 数字图像,又称数码图像,一幅二维图像可以由一个数组或矩阵表示。
  • 数字图像可以理解为一个二维函数f(x,y), 其中 x 和 y 是空间平面坐标,而在任意坐标处的值 f 称为图像在该点处的强度或灰度。
图像处理目的:

  • 改善图示的信息以便人们解释;
  • 为存储、传输和表示而对图像进行的处理。

2.数字图像起源

最早应用的行业

  • 媒体(报纸业)
最早应用的时间

  • 20 世纪 20 年代( 1921 年)
最早“数字图像处理”系统的用途

  • 通过海底电缆,将图像从伦敦传输至纽约。客观的讲,当时的应用并不涉及“数字图像处理”,而是“数字图像传输”

3.常见成像方式

电磁波谱

  • 光子即光量子( light quantum),电磁辐射的量子 E=hf ,其中 h 为普朗克常量, f 为光的频率。普朗克常数的值约为: h=6.62 × 10^ (-34) J·s ,单位为焦 J · 秒(s )。
  • 光速 波长与频率的关系: v=fλ
  • 波长与能量的关系 E = hc/λ
  • c = 光速

4.数字图像的应用

γ 射线成像
是波长小于 10^ 10 米的电磁波。这种不可见的电磁波是从原子核内发出来的,放射性物质或原子核反应中常有这种辐射伴随着发出。 γ 射线的穿透力很强,对生物的破坏力很大 。 大脑生理信号 EEG中常用这个频段 。

X 射线成像
也叫,伦琴射线,这部分电磁波波长从( 10~0.01) × 10^ -9 米。 CT 就是用 X 射线照射物体,由于生物组织或者工程组件的不同部位对 X 射线的吸收率不一样,从而得到不同的衰减以成像。

密度越高,吸收的越多,会发白。

紫外线波段成像 波长比可见光短的称为紫外线,它的波长从 (380~10) × 10^ -9 米,它有显著的化学效应和荧光效应 。在生物医学领域应用最多。

可见光波段成像
这是人们所能感光的极狭窄的一个波段,波长从( 7.8~3.8)× 10^ -7 米,人类能 看见的所有物体都是可见光波段成像,也就是光线照射在物体上,反射到人眼中从而成像的 。

红外线波段成像
红外线波长为 0.78——1000 微米的电磁波,其中波长为 0.78——2.0 微米的部分称为近红外,波长为 2.0——1000 微米的部分称为热红外线。自然界中,一切物体都可以辐射红外线,因此利用探测仪测量目标本身与背景间的红外线差可以得到不同的热红外线形成的红外图像。

微波波段成像
波长从 1 米到 0.1 厘米,这些波多用在雷达或其它通讯系统。微波影像是应用成像微波辐射计(扫描型)接收地物发射波长为1mm~30cm 的微波辐射能形成的影像。

射频波段成像
波长从 3000 米到 10^-3 米,一般的电视和无线电广播、手机等的波段就是用这种波,但也能用于医学成像, MRI 是常见的影像诊疗手段。

传统领域

  • 医学、空间应用、生物学、军事
最新领域

  • 数码相机DC 、数码摄像机DV
  • 指纹识别、人脸识别,虹膜识别
  • 互联网、视频、多媒体等
  • 基于内容的图像检索、视频检索、多媒体检索
  • 水印、游戏、电影特技、虚拟现实、电子商务等
图像处理、机器视觉、人工智能关系
图像处理主要研究二维图像 ,处理一个图像或一组图像之间的相互转换的过程,包括 图像滤波,图像识别,图像分割等问题

计算机视觉主要研究映射到单幅或多幅图像上的三维场景从图像中提取抽象的语义信息,实现图像理解是计算机视觉的终极目标。

人工智能在计算机视觉上的目标就是解决像素值和语义之间关系 ,主要的问题有图片检测,图片识别,图片分割和图片检索。

5.Opencv介绍

OpenCV 于 1999 年由 Intel 建立;

开源发行的跨平台计算机视觉库;

操作系统: Linux 、 Windows 、 Android 、 Mac OS

构成: C 函数和少量 C++ 类;

接口: Python 、 Java 、 MATLAB 等语言

opencv 是数字图像处理和计算机视觉领域最常见的工具包,是学习,科研,企业项目开发的好帮手。

环境安装
python 安装

  • 推荐版本 python3.6
Jupyter Notebook 安装

1.打开命令行 cmd 2.更新 ​​pip python -m pip install --upgrade pip​​ 3.安装 Jupyter:​​ pip install jupyter​

安装 Opencv python
1.打开命令行 cmd 2.​​pip install opencv-contrib-python​

jupter切换环境
查看已有环境

conda env list
选择要想用的环境

conda activate xxx
下载ipykernel

pip install ipykernel
将改环境加入jupyter

python -m ipykernel install --name xxx
打开jupyter,在Kernel里选择所需要的环境即可。

有关Opencv 图像处理:数字图像的必会知识的更多相关文章

  1. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  2. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  3. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  4. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  5. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  6. ruby-on-rails - 在 Ruby (on Rails) 中使用 imgur API 获取图像 - 2

    我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path

  7. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  8. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

  9. ruby - 将n维数组的每个元素乘以Ruby中的数字 - 2

    在Ruby中,是否有一种简单的方法可以将n维数组中的每个元素乘以一个数字?这样:[1,2,3,4,5].multiplied_by2==[2,4,6,8,10]和[[1,2,3],[1,2,3]].multiplied_by2==[[2,4,6],[2,4,6]]?(很明显,我编写了multiplied_by函数以区别于*,它似乎连接了数组的多个副本,不幸的是这不是我需要的)。谢谢! 最佳答案 它的长格式等价物是:[1,2,3,4,5].collect{|n|n*2}其实并没有那么复杂。你总是可以使你的multiply_by方法:c

  10. ruby-on-rails - 使用 Dragonfly 从 URL 分配图像 - 2

    我正在使用Dragonfly在Rails3.1应用程序上处理图像。我正在努力通过url将图像分配给模型。我有一个很好的表格:{:multipart=>true}do|f|%>RemovePicture?Dragonfly的文档指出:Dragonfly提供了一个直接从url分配的访问器:@album.cover_image_url='http://some.url/file.jpg'但是当我在控制台中尝试时:=>#ruby-1.9.2-p290>picture.image_url="http://i.imgur.com/QQiMz.jpg"=>"http://i.imgur.com/QQ

随机推荐