函数图像

图像融合

可紊 提交于 2019-12-01 10:41:22
首先,还是要导入常用的包~ 1 import cv2 2 import matplotlib.pyplot as plt 3 import numpy as np 4 %matplotlib inline 在这里做了一点小小的改进,把显示图片的操作封装在了一个函数中 1 def showimg(name,img): 2 cv2.imshow(name,img) 3 cv2.waitKey(0) 4 cv2.destroyAllWindows() 一开始直接用了addWeighted(),但是出现了如下错误 1 result=cv2.addWeighted(img_cat,0.4,img_dog,0.6,0) 即要融合的两张图片shape值不一样,是无法进行融合操作的,那么接下来就要想办法更改其中一张照片的shape值 就用到了resize()函数 这样就将狗的照片变成和猫的那张照片一样的大小,再使用addWeighted()函数就可以正常显示了 注:关于addWeighted()    #res=αx+βy+b;   #α表示x占的权重,β表示y占的权重,b表示亮度的微调   #在上述参数中img_cat相当于x,img_dog相当于y,0.4相当于α,0.6相当于β,b=0 来源: https://www.cnblogs.com/program-ai-cv-ml-se

python skimage图像处理(一)

安稳与你 提交于 2019-12-01 05:00:47
python skimage图像处理(一) This blog is from: https://www.jianshu.com/p/f2e88197e81d 基于python脚本语言开发的数字图片处理包,比如PIL,Pillow, opencv, scikit-image等。 PIL和Pillow只提供最基础的数字图像处理,功能有限;opencv实际上是一个c++库,只是提供了python接口,更新速度非常慢。scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,正好与matlab一样,因此,我们最终选择scikit-image进行数字图像处理。 Image读出来的是PIL的类型,而skimage.io读出来的数据是numpy格式的 import Image as img import os from matplotlib import pyplot as plot from skimage import io,transform #Image和skimage读图片 img_file1 = img.open('./CXR_png/MCUCXR_0042_0.png') img_file2 = io.imread('./CXR_png/MCUCXR_0042_0.png') 输出可以看出Img读图片的大小是图片的(width, height)

python skimage图像处理(二)

試著忘記壹切 提交于 2019-12-01 05:00:28
python skimage图像处理(二) This blog is from: https://www.jianshu.com/p/66e6261f0279 图像简单滤波 对图像进行滤波,可以有两种效果:一种是平滑滤波,用来抑制噪声;另一种是微分算子,可以用来检测边缘和特征提取。 skimage库中通过filters模块进行滤波操作。 1、sobel算子 sobel算子可用来检测边缘 函数格式为: skimage.filters.sobel(image, mask=None) from skimage import data,filters import matplotlib.pyplot as plt img = data.camera() edges = filters.sobel(img) plt.imshow(edges,plt.cm.gray) 2、roberts算子 roberts算子和sobel算子一样,用于检测边缘 调用格式也是一样的: edges = filters.roberts(img) 3、scharr算子 功能同sobel,调用格式: edges = filters.scharr(img) 4、prewitt算子 功能同sobel,调用格式: edges = filters.prewitt(img) 5、canny算子 canny算子也是用于提取边缘特征

Harris角点检测

帅比萌擦擦* 提交于 2019-11-30 21:22:09
Harris角点检测 1.角点概述 角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使其信息的含量很高, 有效地提高了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。角点在三维场景重建运动估计,目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用 。在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。从图像分析的角度来定义角点可以有以下两种定义: a. 角点可以是两个边缘的角点; b. 角点是邻域内具有两个主方向的特征点; 前者往往需要对图像边缘进行编码,这在很大程度上依赖于图像的分割与边缘提取,具有相当大的难度和计算量,且一旦待检测目标局部发生变化,很可能导致操作的失败。 早期主要有Rosenfeld和Freeman等人的方法,后期有CSS等方法。基于图像灰度的方法通过计算点的曲率及梯度来检测角点, 避免了第一类方法存在的缺陷,此类方法主要有Moravec算子、Forstner算子、Harris算子、SUSAN算子等。本文主要介绍的Harris角点检测的算法原理。 2. Harris角点检测基本原理 人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。 如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。

基于opencv-python的车牌识别

江枫思渺然 提交于 2019-11-30 05:41:51
记一篇数字图像课程的实训 基于 opencv-python 的车牌识别,代码主要参考CSDN上几个版主的代码,对代码进行了一定的优化,一定程度上提高了识别的准确率。并重写了一个GUI界面,添加数据导出功能。 使用的模块: 主要模块: cv2 GUI 界面: PyQt5 其他模块: numpy os json time 版本: python:3.7.1 PyQt5:5.11.3 opencv-python:3.4.3.18 完整工程: GitHub: https://github.com/casuallyName/Python/tree/master/车牌识别 CSDN : https://download.csdn.net/download/fairytale__/11184445 先放一张运行截图: 基本实现流程: 读取图像 使用 cv2.imdecode() 函数将图片文件转换成流数据,赋值到内存缓存中,便于后续图像操作。使用 cv2.resize() 函数对读取的图像进行缩放,以免图像过大导致识别耗时过长。 降噪 使用 cv2.GaussianBlur() 进行高斯去噪。使用 cv2.morphologyEx() 函数进行开运算,再使用 cv2.addWeighted() 函数将运算结果与原图像做一次融合,从而去掉孤立的小点,毛刺等噪声。 # 高斯去噪 if blur > 0

Opencv学习之图像的矩

笑着哭i 提交于 2019-11-30 04:05:14
Opencv学习之图像的矩 一个从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量的关于该图像不同类型的几何特性信息,比如大小、位置、方向及形状等。一阶矩与形状有关,二阶矩显示曲线围绕直线平均值的扩展程度,三阶矩则是关于平均值的对称性的测量。由二阶矩和三阶矩可以导出一组共7个不变矩。而不变矩是图像的统计特性,满足平移、伸缩、旋转均不变的不变性,在图像识别领域得到了广泛的应用。 一般由moments、contourArea、arcLength这三个函数配合求取图像的矩: *使用moments计算图像所有的矩(最高到3阶) *使用contourArea来计算轮廓面积 *使用arcLength来计算轮廓或曲线长度 矩的计算–moments函数 函数用于计算多边形和光栅形状的最高达三阶的所有矩。矩用来计算形状的重心、面积,主轴和其他形状特征,如7Hu不变量等。 Moments moments(inputArray array, bool binaryImage=false) *第一个参数,输入参数,可以是光栅图像(单通道,8位或浮点的二维数组)或二维数组(1N或N1)。 *第二个参数,默认值false,若此参数取true,则所有非零像素为1.此参数仅对图像使用。 计算轮廓面积–contourArea函数 函数用于计算整个轮廓或部分轮廓的面积 double

opencv图像匹配常用特征点

与世无争的帅哥 提交于 2019-11-30 04:05:00
特征点又称兴趣点、关键点,它是在图像中突出且具有代表意义的一些点,通过这些点我们可以用来识别图像、进行图像配准、进行3D重建等。本文主要介绍OpenCV中几种定位与表示关键点的函数。 一、Harris角点 角点是图像中最基本的一种关键点,它是由图像中一些几何结构的关节点构成,很多都是线条之间产生的交点。Harris角点是一类比较经典的角点类型,它的基本原理是计算图像中每点与周围点变化率的平均值。 (1) (2) 其中I(x+u,y+u)代表了点(x,y)邻域点的灰度值。通过变换可以将上式变化为一个协方差矩阵求特征值的问题(2),具体数学原理本文不过多描述。 OpenCV的Hairrs角点检测的函数为cornerHairrs(),但是它的输出是一幅浮点值图像,浮点值越高,表明越可能是特征角点,我们需要对图像进行阈值化。我们使用一张建筑图像来显示: int main() { Mat image=imread( " ../buliding.png " ); Mat gray; cvtColor(image,gray,CV_BGR2GRAY); Mat cornerStrength; cornerHarris(gray,cornerStrength, 3 , 3 , 0.01 ); threshold(cornerStrength,cornerStrength, 0.001 , 255

卷积神经网络概念

妖精的绣舞 提交于 2019-11-29 21:04:55
卷积神经网络   卷积神经网络(CNN)是深度学习的代表算法之一 。具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络” 。 随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于 计算机视觉 、 自然语言处理 等领域 。   卷积是通过两个函数 f,g 生成第三个函数的一种数学算子,表征函数 f 与 g 经过翻转和平移的重叠部分的面积。数学定义公式:   事实上,在卷积网络上使用的离散卷积,也就是不连续的,它是一种运算方式,也就是按照卷积核,将输入对应位置的数据进行加权和运算,接下来结合卷积核的概念,就会很好理解了。 卷积神经网络最重要的两个知识点就是 卷积核 和 卷积神经网络的结构 卷积核 卷积核定义 卷积操作 深度 步幅 零填充 卷积神经网络的结构 输入层 INPUT 卷积层 CONV 激活函数层 RELU 池化层 POOL 全连接层 FC 卷积核 ​  卷积核是整个网络的核心,训练 CNN 的过程就是不断更新卷积核参数直到最优的过程。    卷积核的定义 :对于输入图像中的一部分区域,进行加权平均的处理,其中这个过程的权重,由一个函数定义,这个函数就是卷积核。 如下图彩色图像有RGB三个色值通道,分别表示红、绿、蓝,每个通道内的像素可以用一个像下图右边的二维数组表示,数值代表0-255之间的像素值

图像分割之cvSnakeImage

孤者浪人 提交于 2019-11-29 14:54:34
基本概念 OpenCV之前有个cvSnakeImage函数实现了Snakes活动轮廓模型,但是cvSnakeImage函数在opencv2中已经被去掉。由于没有无法得知其依据的论文,这里根据源代码简单介绍它的原理。遍历每个轮廓的点,计算该点邻域内每个点的能量E,将能量最小的点代替当前点。E= alpha * Econt + beta * Ecurv + gamma * Eimg。Econ表示轮廓点的距离信息,Ecurv表示轮廓点的曲率信息,Eimg表示像素或者像素梯度。 用OpenCV3.x重新实现后,发现貌似只对二值化图像分割有作用。 示例演示 用OpenCV3.x重新实现cvSnakeImage函数。 完整工程代码 。 void SnakeImage::segment(std::vector<cv::Point> &points) { drawCurve(points); if (points.size() < 3) return; int i = 0, j = 0, k = 0; //win_ is a domain, in which search minimization of energy for each point //neighbors is the number of points in win_ int neighbors = win_.height *

MATLAB之图像与音频信号处理

帅比萌擦擦* 提交于 2019-11-29 14:27:41
原理简介 离散傅立叶、离散余弦和离散小波变换是图像、音频信号常用基础操作,时域信号转换到不同变换域以后,会导致不同程度的能量集中,信息隐藏利用这个原理在变换域选择适当位置系数进行修改,嵌入信息,并确保图像、音频信号经处理后感官质量无明显变化。 变换定义 一维离散傅立叶变换对定义: 一维离散余弦变换对定义: 一维连续小波变换对定义: 二维离散傅立叶变换对定义: 二维离散余弦变换对定义: 用离散傅立叶变换分析合成音频和图像 分析合成音频文件包括以下步骤: l 读取音频文件数据 l 一维离散傅立叶变换 l 一维离散傅立叶逆变换 l 观察结果 第一步:读取音频文件数据 新建一个 m 文件,另存为 example11.m,输入以下命令: clc; clear; len = 40000; [fn, pn] = uigetfile('*.wav', '请选择音频文件'); [x, fs] = wavread(strcat(pn, fn), len); uigetfile 是文件对话框函数,提供图形界面供用户选择所需文件,返回目标的目录名和文件名。 函数原型:y= wavread (FILE) 功能:读取微软音频格式(wav)文件内容 输入参数:file 表示音频文件名,字符串 返回参数:y 表示音频样点,浮点型 第二步:一维离散傅立叶变换 新建一个 m 文件,另存为 example12.m