2019-03-01 09:56:52 BIT_666 阅读数 401

1.定义

一幅图像定义为一个二维数组f(x,y),其中x,y是空间的平面坐标,而在任何一堆空间坐标x,y处的幅值f成为图像在该点的强度或灰度,每个元素都有一个特定的位置和幅值,这些元素称为像素。

 

2.图像处理分类

低级处理:输入,输出都是图像,例如降噪,对比度增强,图像锐化

中级处理:输入,输出都为图像特征,边缘,轮廓,物体标识

高级処理:输入为图像,输出涉及理解,识别目标总体

 

3.图像处理步骤

图像获取:包括图像预处理,例如图像缩放,截取等

图像增强:对一幅图进行某种操作,使其更适合处理应用

图像复原:改进图像外观的一个领域,一般基于图像退化的数学或概率为基础

图像压缩:减少图像存储量或降低图像带宽的处理

图像分割:对图像划分为他的组成部分或目标

图像识别:基于目标的描述给目标赋予标志

 

4.图像指标

图像一般由MxN的大小与灰度级L作出判定

1)表示

令f(s,t)表示具有两个连续变量s,t的连续图像函数,s,t的值记为x,y,由一幅图像的坐标张成的实平面为平面空间,x,y称为空间坐标或空间变量

2)图像展示

函数图:两个坐标决定空间位子,第三个是x,y坐标处的函数的灰度值

                                                                          

                                             

Tip:

原点位于左上角,基于一个事实,许多图像扫描都是从左上角开始是,然后一行一行向下移动,其次矩阵习惯在[0,0]处为左上角,一般情况下,用传统矩阵法表示数字图像处理.

 

                                                     

数字化过程一般是M,N,以及灰度值L,M,N无要求,正整数即可,灰度一般以离散灰度1L作为判定,出于存储和量化的考虑,灰度级一般取2的整数次幂,L=2**k,假设离散灰度级是等间隔的,是区间[0,L-1]内的整数。

 

3)指标

动态范围:最大可度量灰度与最小刻度量灰度之比,上限取决于饱和度,下限取决于噪声

对比度:一幅图最高和最低灰度级间的灰度差为对比度1

Tip:

一般而言,一幅图有高的对比度,我们可以认为他有高的动态范围

饱和度:超过饱和度规定的灰度值将被替换为饱和度规定的值

噪声:较暗区域,灰度值低,噪声会掩盖可检测的最低真实灰度级

 

5.常见的图像

RGB图像:使用R,G,B三个通道来表示每个像素的颜色,R,G,B的像素值放在图像矩阵中,三个MxN的二维矩阵分别表示各个像素的RGB分量

                                                

灰度图像:[0-255]数据类型为无符号整数的int8,0表示是黑色,255表示白色

                                                                        

二值图像:由0,1组成,0表示黑色,1表示白色

                                                                         

RGB转灰度 : Gray = R*0.299 + G*0.587+ B* 0.114

2016-04-12 20:36:48 qq_20823641 阅读数 14317

基础储备知识列表(图像必备基础)

1.     图像会表示成一个2D实数矩阵f(x,y),也称为是图像在那个像素的灰度或者是亮度,对于double类型的是0.0黑      1.0白,对于unit8类型是0黑,255是白

2.     图像常见的数字形式编码:位图(栅格)和矢量

3.     图像表示

        二值化图像,1比特图像(一个像素是1比特)0 1
       灰度图像,8比特图像(1个像素是8比特)0-255
       彩色图像24比特(RGB各占8比特),同时也会有第四通道,提供对每个像素透明性的测度

      索引图像 24比特,其中每个像素给出的索引和索引所指示的彩色调色板中的元素R G B的值

4.     基本术语

     图像拓扑:常用于二值图像并借助形态学

     领域:围绕一个给定像素的周围构成它的领域,4领域 8领域

     邻接;通路;连接性;组元

5.     图像处理分为3个层次

     底层:基本操作(噪声消除,对比度增强),其中输入和输出都是图像

     中层:从图像中提取属性(如边缘,轮廓,区域)

     高层:对一个场景的内容进行分析和解释

6.     图像的处理分为:空间域和频域

     空间域:

     全局(点)操作

     面向领域的操作,卷积

     结合多幅图像的操作

             频域:

7.     图像的采集需要光,光可用电磁波或者粒子秒速,一个光子是一个微小的电磁振动能量包,可以用波长和频率来刻画,波长乘以频率等于波传播的速度,人类的视觉系统(HVS)对波长在400-700nm,1nm=10-9m

8.     彩色编码和表达

      彩色可使用3个数值分量和恰当的增加权函数来编码。最简单的编码方式就是像素的RGB

9.     人对光的感知以及对颜色的感知常用3个参数来描述:

      辉度:对于发光强度的主观感受

     色调:一个视感觉的属性,对应区域是否类似于一个感知的彩色,红绿蓝或者是组合

     饱和度:对一个区域用与其亮度成比例来判断的彩色行,对光源白色性的描述

     注:亮度可以用红绿蓝的加权和来计算

10.   数字图像处理的硬件:采集装置,负责捕获数字化图像或视频序列camera link。当相机产生模拟视频输出时,需要使用一个图像数字化器(图像采集卡)将其转化成数字格式;

      处理装置,计算机;显示和硬拷贝设备;存储设备,光盘。

      数学图像处理的软件,matlab c++

11.   图像传感器:将电磁辐射能量转换为可以处理、显示和解释成图像的电信号。主要是基于CCD(电荷耦合装置)和CMOS(互补型金属氧化物半导体器件)工艺。

      相机长常用的是CCD传感器,他们不受几何失真的影响并对入射光有线性的响应,一个CCD传感器由一组光敏单元构成,用硅制造,每个能产生正比于落在上面光密度的电压。一个感光单元具有一个约10^6能量载体的有限能力,这限制了被成像物体的明度上限,一个饱和的感光单元会溢出,从而影响它相邻单元并导致成为渗色的缺陷

     一个CCD相机有时候插入一个计算机板子,称为帧缓存,它包括对相机采集的图像快速访问的内存(典型的是每幅图像0.1ms),图像在被采集和临时存储在帧缓存后,将被处理货复制到长时存储设备中。

    在单CCD的相机中,使用具有对每种光基色(红蓝绿)不同感光单元的三色成像仪,其中感光单元排列成贝叶斯模式,这样,每个像素实际上仅仅记录了三个基色之一。

     COMS传感器是分层传感器堆栈,在网格的每个位置都有分层的对所有三种基色都敏感的光电传感器,在每个像素只有一个仅对一种基色敏感的光电传感器。

相机的镜头有2个重要的参数是它的放大倍数和光收集能力

12.   图像数字化:(时间或者空间)采样、(幅度上)量化

     采样就是去离散的值,有采样率,采样率要大于信号中最高频率分量的2倍(乃奎斯特准则),采样模式

     量化是将一个连续变化函数用一个离散集合的量化级替换的过程。图像的量化级是灰度级,量化理解为映射,就是把一个范围的灰度值隐射到单个点,例如0-255可以均匀量化为4,1代表0-64 2代表65-128 3代表129-1924代表193-255

     空间分分辨率;描述衣服图像中像素密度,空间分辨率高,将有越多的像素用来显示一副固定尺寸的图像,每英寸点数dpi表示,空间分辨率降低的时候,质量变化不是很明显,但是像素化,锯齿化 细节的损失,甚至会出现莫尔模式

     灰度分辨率是HVS能辨别的亮度级的最小变化,对于单色图像每个像素8比特是在主观质量和实际实现(每个像素值对应一个字节对应)中较好的平衡

 


2018-11-26 19:20:03 weixin_42956785 阅读数 266

tensorflow图像处理函数

必备知识点: 一张RGB色彩模式的图像可以看成一个三维矩阵,矩阵中的每一个数表示了图像上不同的位置,不同颜色的亮度。然而在图像储存的时候,并不是直接记录这些矩阵中的数字,而是记录经过压缩之后的结果,故在打开一张照片的时候则需要进行解码的过程
流程图:
在这里插入图片描述
tensorflow提供了对jpeg和png格式图像的编码/解码函数
使用的图像:
在这里插入图片描述

读取图像

import matplotlib.pyplot as plt  #python画图工具
import tensorflow as tf
#调用tf.gfile.GFile(路径,读取方式)函数,如果用r去read读取文件,会有编码不配的错误,所以这里我采用rb来read
img_raw_data = tf.gfile.GFile("C:\\Users\\huanshangfeng\\Desktop\\tf\\picture\\1.jpeg",'rb').read()

解码图像,并显示图像

sess = tf.InteractiveSession() #创建会话,等价于with tf.Session() as sess: 
img_data = tf.image.decode_jpeg(img_raw_data) #对jpeg格式的图像进行解码,若是png格式,则使用tf.image.decode_png(未解码的数据),结果为张量
plt.imshow(resized.eval())
plt.show()
ecoded_image = tf.image.encode_png(img_data) #压缩编码
with tf.gfile.GFile("保存地址","wb") as f:
    f.write(ecoded_image.eval())  #写入文件

改变图片的大小(通过算法)

#使用tf.image.resize_images(图片张量,改变后大小,调整方法)
resized1 = tf.image.resize_images(img_data,size=[1000,1000],method=0)#双线性插值法
resized2 = tf.image.resize_images(img_data,size=[1000,1000],method=1)#最近邻居法
resized3 = tf.image.resize_images(img_data,size=[1000,1000],method=2)#双三次插值法
resized4 = tf.image.resize_images(img_data,size=[1000,1000],method=3)#面积插值法
print(resized1.get_shape())  #可以获取图片打下的信息

改变图片大小(通过剪裁)

#当所修改的尺寸大于原始图像尺寸时,使全零填充,当所修改的尺寸小于原始图像尺寸时,自动截取原始图像居中部分
croped = tf.image.resize_image_with_crop_or_pad(resized,500,500)
plt.imshow(croped.eval())
plt.show()
padded = tf.image.resize_image_with_crop_or_pad(resized,2000,2000)
plt.imshow(padded.eval())
plt.show()

尺寸小于:
在这里插入图片描述
尺寸大于:
在这里插入图片描述

图像翻转

img_data = tf.image.decode_jpeg(img_raw_data)  #解码
flipped = tf.image.flip_up_down(img_data)#上下翻转
flipped = tf.image.flip_left_right(img_data)#左右翻转
transped = tf.image.transpose_image(img_data)#对角线翻转
flipped = tf.image.random_flip_up_down(img_data)#左右随机翻转
flipped = tf.image.random_flip_left_right(img_data)#上下随机翻转

上下翻转
在这里插入图片描述
左右翻转
在这里插入图片描述
对角线:

在这里插入图片描述

图像色彩调整(亮度)

#调用tf.image.adjust_breghtness(图像矩阵,调整系数(大于负1小于1)
#小于-1后,就是全黑的图像,大于1则是全白图像
adjusted = tf.image.adjust_brightness(img_data,-0.3)
adjusted = tf.image.adjust_brightness(img_data,0.6)
#随机在[-max_delta,max_delta)范围随机调整图像的亮度,记住此处是random
adjusted = tf.image.random_brightness(img_data,max_delta)

-0.3图像
在这里插入图片描述
0.6图像
在这里插入图片描述

图像色彩调整(对比度)

#调用tf.image.adjust_contrast(图像矩阵,对比度)
adjust = tf.image.adjust_contrast(img_data,-5)
adjust = tf.image.adjust_contrast(img_data,5)
#在一个给定的范围内进行随机变换,[lower,upper],值得注意的是lower>=0;
adjust = tf.image.random_contrast(img_data,0,5)

-5的图像
在这里插入图片描述
5的图像
在这里插入图片描述

图像色彩调整(色相)

#函数tf.image.adjust_hue(图像矩阵,系数)
adjust = tf.image.adjust_hue(img_data,0.3)
#在[0,max_delat]范围内变化
adjust = tf.image.random_hue(img_data,max_delat)

图像色彩调整(饱和度)

adjusted = tf.image.adjust_saturation(img_data,-5)
adjusted = tf.image.adjust_saturation(img_data,5)
#同样,最小值大于等于零
adjusted = tf.image.random_saturation(img_data,0,5)

标准化图像

adjusted = tf.image.per_image_standardization(img_data) #均值为0,方差为1
adjusted = tf.clip_by_value(adjusted, 0.0, 1.0) #为了显示出图像,矩阵不应该有负数,故此处调整为01之间

在这里插入图片描述

2018-09-22 10:10:48 weixin_36105362 阅读数 3871

人工智能、机器学习、神经网络、深度学习、TensorFlow、图像处理必备书籍(附PDF百度盘下载链接)

在学习人工智能相关相关知识中往往不理解其中相关术语意义和知识原理的组成,下面书籍是阿拉灯神丁君在阅读了大量书籍后觉得很不错的一部分,特此分享出来,以供大家学习之便利。内容链接如有侵犯到您的权益,请联系删除。

学习资料持续更新,完整书籍链接请关注 公众号“AI人工智能客栈” 回复关键字 “人工智能书籍” 获取百度盘链接

在这里插入图片描述

1、机器学习 周志华.pdf

链接:https://pan.baidu.com/s/1P5Owh7YoZ6ncQz9dXanwCA 密码:wzst

2、推荐系统实践.pdf

3、《自然语言处理综论》.pdf

4、《计算机视觉:一种现代方法》.pdf

5、图解机器学习.pdf

6、《决策知识自动化》.pdf

7、《人工智能:一种现代的方法(第3版)》.pdf

8、Python数据分析与挖掘实战.pdf

9、机器学习导论.pdf

10、面向机器智能的TensorFlow实践 (智能系统与技术丛书)_.pdf

11、图像处理、分析与机器视觉(第三版).pdf

12、TensorFlow实战_黄文坚(完整).pdf

13、Tensorflow 实战Google深度学习框架.pdf

14、统计学习方法.pdf

作者李航,是国内机器学习领域的几个大家之一,曾在MSRA任高级研究员,现在华为诺亚方舟实验室。书中写了十个算法,每个算法的介绍都很干脆,直接上公式,是彻头彻尾的“干货书”。每章末尾的参考文献也方便了想深入理解算法的童鞋直接查到经典论文;本书可以与上面两本书互为辅助阅读。

15、数学之美.pdf

作者吴军大家都很熟悉。以极为通俗的语言讲述了数学在机器学习和自然语言处理等领域的应用。

16、区块链新经济概论.pdf

最近也是在学习入门阶段,也就一个感觉“一如侯门深似海,从此节操是路人”,看的我是头晕眼花,公式,概念,金星星眼前飘过~~~…((/- -)/

以上电子书也基本都是高清版,本人对电子书的质量要求也是比较高的,影印版太垃圾了,更是伤银镜。

人工智能领域涵盖的知识非常的广:算法、深度学习、机器学习、自然语言处理、数据结构、Tensorflow、Python 、数据挖掘、搜索开发、神经网络、视觉度量、图像识别、语音识别、推荐系统、系统算法、图像算法、数据分析、概率编程、计算机数学、数据仓库、建模等关键词,基本涵盖了现阶段人工智能细分领域的人才结构。

2019-03-09 20:45:20 qq_36969835 阅读数 582

入门基础必备:

  • C#类库的GDI+可以支持图像处理
    在这里插入图片描述

  • bitmap主要是处理图片的
    在这里插入图片描述
    在这里插入图片描述
    直接利用文件名创建一个对象
    在这里插入图片描述
    利用已有的对象来创建
    在这里插入图片描述
    或者在内存里创建 利用宽,高创建
    在这里插入图片描述
    FromFile的方式创建

  • 更一般的图像处理,可以用图像的像素处理:

在这里插入图片描述

  • 用GetPixel(x,y)得到目标像素点的颜色的方法,用这种方式比较慢。
    在这里插入图片描述
  • 更一般的方法在处理图像是用指针
    C#是支持指针的,但是一般我们不用,在处理图像的时候,直接涉及到内存,就可以使用指针。
    基本方法是:用到LockBits()就是锁住像素的二进制位。

在这里插入图片描述
这里得到了一个像素对象。
在这里插入图片描述
此对象的 Scan0的属性可以简单理解为第一个像素点的位置在内存中位置。
这里是强制转化为指针的意思。理解为内存里的像素怎么存的。
pBase是指针的基位置。也就是第0个位置。
在这里插入图片描述
y代表高度。x表示宽度。
stride也是bitmapData的属性表示图像的一行在内存里占的字节数。是已经计算好了的。
解释是怎么计算的:一般图像是24位(也就是红绿蓝三个字节的话),大体上一行的宽度相当于图像的宽度乘以三(因为一个点占三个字节),但是习惯于一行里占的字节数是四的倍数,如果宽度乘以三不是四的倍数,就会自动补齐。
x*sizeof(PixIDdata)每一个点占的像素数
用指针一下就可以找到这个点。

  • 比较这两种方法:普通的方法是指针方法所用时间的五倍

    • 用普通GetPiexl方法:
      在这里插入图片描述
    • 用指针的方式:把普通的bitmap包装成unsafeBitmap,用指针的方式得到像素点:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      得到指针
      在这里插入图片描述
      注意:
      PixIDdata的结构:就是红绿。一般来说红是高字节的,把它放在后面。
      图像处理,在C#主要是对像素的各种运算。
  • 图像处理:如图像滤镜
    在这里插入图片描述

没有更多推荐了,返回首页