计算机视觉初入门

计算机视觉初入门

  • 1.什么是计算机视觉?
  • 2. 配置实验环境
    • 2.1 anaconda的安装教程
    • 2.2 PyCharm的安装
  • 3. OpenCv的下载与安装
  • 4.基本的图像操作
    • 4.1 读取图像直方图
    • 4.2 灰度图像的转换
    • 4.3 直方图均衡化
    • 4.4 高斯滤波
  • 5.总结

1.什么是计算机视觉?

计算机视觉(Computer Vision)是指用计算机实现人的视觉功能——对客观世界的三维场景的感知、识别和理解。

这意味着计算机视觉技术的研究目标是使计算机具有通过二维图像认知三维环境信息的能力。因此不仅需要使机器能感知三维环境中物体的几何信息(形状、位置、姿态、运动等)而且能对它们进行描述、存储、识别与理解。可以认为,计算机视觉与研究人类或动物的视觉是不同的:它借助于几何、物理和学习技术来构筑模型,用统计的方法来处理数据。

人工智能的完整闭环包括感知、认知、推理再反馈到感知的过程,其中视觉在我们的感知系统中占据大部分的感知过程。所以研究视觉是研究计算机的感知重要的一步。

2. 配置实验环境

关于计算机视觉实验的环境我选择了:anaconda+PyCharm 2020.3

2.1 anaconda的安装教程

这个相对于比较简单,去anaconda官网下载就好了。
官网链接:https://www.anaconda.com/products/individual

会有一个500来M的安装文件,点击安装后出现下图:
计算机视觉初入门_第1张图片
一直点击next到这一步,选择适用的电脑账户,一般用户只有一个系统账号,选择默认的就可以了/
计算机视觉初入门_第2张图片
安装空间大概需要有3个G的空余磁盘,所以不太建议塞进c盘,往同是固态盘的其他盘里赛就可以了。
计算机视觉初入门_第3张图片
那么如何检查自己的anaconda是否安装成功呢?
很简单,在cmd命令行中键入 conda --version
若出现下图代表环境变量的配置有问题
计算机视觉初入门_第4张图片
如果是windows的话需要去 控制面板\系统和安全\系统\高级系统设置\环境变量\用户变量\PATH 中添加 anaconda的安装目录的Scripts文件夹, 比如我的路径是D:\python\Scripts, 看个人安装路径不同需要自己调整

再次在cmd命令行中键入 conda --version,出现下图代表安装成功
计算机视觉初入门_第5张图片

2.2 PyCharm的安装

PyCharm的安装教程我是参考的别人的:https://www.runoob.com/w3cnote/pycharm-windows-install.html

3. OpenCv的下载与安装

博主这里采用了一种比较方快捷的方法:
打开PyCharm的这个界面(设置-》项目-》Python解释器)
计算机视觉初入门_第6张图片
点击左下角加号即可搜索添加opencv

4.基本的图像操作

以下均采用此图片进行测试:
计算机视觉初入门_第7张图片

4.1 读取图像直方图

代码:

# 读取图像到数组中
from PIL import Image
from pylab import *

# 读取图像到数组中
im = array(Image.open('测试图片.JPG').convert('L'))
# 新建一个图像
figure()
# 不使用颜色信息
gray()
# 在原点的左上角显示轮廓图像
contour(im, origin='image')
axis('equal')
axis('off')
figure()
hist(im.flatten(), 128)
show()

运行结果:
计算机视觉初入门_第8张图片

4.2 灰度图像的转换

代码:

from PIL import Image
from pylab import *


# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()


pil_im = Image.open('D:\计算机视觉\测试图片.JPG')
gray()# 不使用颜色信息
subplot(121)
title(u'原图',fontproperties=font)
axis('off')
imshow(pil_im)


pil_im = Image.open('D:\计算机视觉\测试图片.JPG').convert('L')
subplot(122)
title(u'灰度图',fontproperties=font)
axis('off')
imshow(pil_im)


show()

运行结果:
计算机视觉初入门_第9张图片

4.3 直方图均衡化

代码:

from tkinter import font

from PIL import Image
from pylab import *
from numpy import *


def histeq(im, nbr_bins=256):
    """对一幅灰度图像进行直方图均衡化"""
    # 计算图像的直方图
    # 在numpy中,也提供了一个计算直方图的函数histogram(),第一个返回的是直方图的统计量,第二个为每个bins的中间值
    imhist, bins = histogram(im.flatten(), nbr_bins)
    cdf = imhist.cumsum()  #
    cdf = 255.0 * cdf / cdf[-1]
    # 使用累积分布函数的线性插值,计算新的像素值
    im2 = interp(im.flatten(), bins[:-1], cdf)
    return im2.reshape(im.shape), cdf


# 添加中文字体支持
from matplotlib.font_manager import FontProperties

font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()

pil_im = Image.open('D:\计算机视觉\测试图片.JPG')  # 打开原图
pil_im_gray = pil_im.convert('L')  # 转化为灰度图像
subplot(221)
gray()
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im_gray)

im = array(Image.open('D:\计算机视觉\测试图片.JPG').convert('L'))
im2, cdf = histeq(im)
im2 = Image.fromarray(uint8(im2))
subplot(222)
gray()
title(u'灰度均衡化', fontproperties=font)
axis('off')
imshow(im2)

subplot(223)
title(u'原始灰度图像直方图', fontproperties=font)
axis('off')
im1 = array(pil_im_gray, 'f')
hist(im1.flatten(), 128)

subplot(224)
title(u'均衡化后灰度图像直方图', fontproperties=font)
axis('off')
im3 = array(im2, 'f')
hist(im3.flatten(), 128)

show()

运行结果:
计算机视觉初入门_第10张图片

4.4 高斯滤波

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。
通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。

原理介绍:
高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
计算机视觉初入门_第11张图片
计算机视觉初入门_第12张图片
滤波是对输入信号进行卷积处理的一个过程,写成一个函数的形式是这样的:
滤波 = 卷积( 输入信号 ,卷积模板 ) 卷积模板/掩膜 的不同决定了不同的滤波方式,也因此产生了高通、低通、带通、带阻等基本的滤波方式。

针对低通滤波,就是保留将信号中的低频部分,抑制高频部分。要达到这个目的,可以利用均值掩膜、高斯掩膜等对输入信号进行处理。

采用均值掩膜对输入信号进行卷积的滤波方式叫均值滤波;
采用高斯掩膜对输入信号进行卷积的滤波方式叫高斯滤波;

高斯滤波和高斯模糊:
一样。不加“高斯”这个限定词时,滤波的范畴要远远大于模糊,后者只是前者的一个子集。当加上“高斯”限定以后,所指代的卷积操作就是同一个操作了,因为根据方程 滤波 = 卷积( 输入信号 ,卷积模板 ),当两个操作的输入信号和卷积模板都一样时,这两个操作就是一个操作了
那是因为这个滤波的效果看起来像是把图像给弄模糊了,所以又有了“高斯模糊”的叫法。

SciPy(http://scipy.org/) 是建立在 NumPy 基础上,用于数值运算的开源工具包。SciPy 提供很多高效的操作,可以实现数值积分、优化、统计、信号处理,以及对我们来说最重要的图像处理功能。接下来,本节会介绍 SciPy 中大量有用的模块。SciPy 是个开源工具包,可以从http://scipy.org/Download 下载。
计算机视觉初入门_第13张图片

代码:

from PIL import Image
from pylab import *
from numpy import *
from scipy.ndimage import filters

# 添加中文字体支持
from matplotlib.font_manager import FontProperties

font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)

im = array(Image.open('D:\计算机视觉\测试图片.JPG').convert('L'))

figure()
gray()
axis('off')
subplot(1, 4, 1)
axis('off')
title(u'原图', fontproperties=font)
imshow(im)

for bi, blur in enumerate([2, 5, 10]):
    im2 = zeros(im.shape)
    im2 = filters.gaussian_filter(im, blur)
    im2 = np.uint8(im2)
    imNum = str(blur)
    subplot(1, 4, 2 + bi)
    axis('off')
    title(u'标准差为' + imNum, fontproperties=font)
    imshow(im2)
show()

运行结果:
计算机视觉初入门_第14张图片

5.总结

跟之前学习matlab的语法很相似,所以入门也没有感觉到多么困难,主要是环境的配置比较花时间,因为python版本过高的话,它的pip版本也会相应变高,在这个基础上,很多工具包版本都不适配了。

你可能感兴趣的:(计算机视觉,计算机视觉,人工智能)