函数图像

HOG:从理论到OpenCV实践

孤人 提交于 2019-12-16 02:57:01
OpenCV HOGDescriptor 参数图解 原文链接 一、理论 1、 HOG特征描述子的定义 : locally normalised histogram of gradient orientation in dense overlapping grids,即局部归一化的梯度方向直方图, 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征。 2、本质: Histogram of Oriented Gradient descriptors provide a dense overlapping description of image regions ,即 统计图像局部区域的梯度方向信息来作为该局部图像区域的表征。 3、OpenCV中的HOG算法来源: Histograms of Oriented Gradients for Human Detection , CVPR 2005。详细的算法可以参考这个文章。这里是 英文 和 中文 的介绍。 4、 检测窗口Win、块Block、单元格Cell的基本信息 (1)大小: A、检测窗口:WinSize=128*64像素,在图像中滑动的步长是8像素(水平和垂直都是) B、块:BlockSize=16*16像素,在检测窗口中滑动的步长是8像素(水平和垂直都是) C、单元格:CellSize=8*8像素

图像的几何运算

混江龙づ霸主 提交于 2019-12-15 17:25:58
目录 1.图像的插值 2.旋转与平移变换 3.缩放与裁剪变换 4.镜像变换 @ 图像的几何运算是指引起图像几何形状发生改变的变换。与点运算不同的是,几何运算可以看成是像素在图像内的移动过程,该移动过程可以改变图像中物体对象之间的空间关系。 1.图像的插值 图像插值是指利用已知邻近像素点的灰度值来产生位置像素点的灰度值,以便由原始图像再生成具有更高分辨率的图像。插值是在不生成新的像素的情况下对原图像的像素重新分布,从而改变像素数量的一种方法。在图像放大过程中,像素也相应的增加,增加的过程就是‘插值’发生作用的过程,‘’插值程序自动选择信息较好的像素作为增加、弥补空白像素的空间,而并非只使用近邻的像素,所以在放大图像时,图像看上去会比较平滑、干净。无论使用何种插值方法,首先都需要找到与输出图像像素相对应的输入图像点,然后再通过计算该点附近某一像素集合的权平均值来指定输出像素的灰度值。像素的权是根据像素到点的距离来而定的,不同插值方法的区别就在于考虑的像素集合不同。最常见的插值方法如下: (1)向前映射法: 通过输入图像像素的位置,计算输出图像对应像素的位置,将该位置像素的灰度值按某种方式分配到输出图像相邻的四个像素。 (2)向后映射法: 通过输出图像像素位置,计算输入图像对应像素的位置,根据输入图像相邻四个像素的灰度值计算该位置像素的灰度值。 (3)最近邻插值:

1128:图像模糊处理(round函数(四舍五入化整))

泪湿孤枕 提交于 2019-12-14 19:57:27
【题目描述】 给定nn行mm列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理: 1.四周最外侧的像素点灰度值不变; 2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。 【输入】 第一行包含两个整数nn和mm,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤1001≤n≤100,1≤m≤100。 接下来nn行,每行mm个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0∼2550∼255之间。 【输出】 nn行,每行mm个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。 【输入样例】 4 5 100 0 100 0 50 50 100 200 0 0 50 50 100 100 200 100 100 50 50 100 【输出样例】 100 0 100 0 50 50 80 100 60 0 50 80 100 90 200 100 100 50 50 100 #include <iostream> #include <cmath> using namespace std; int i,j,k; #define A 100+5 int main() { int a[A][A]; double b[A][A]; int m,n; cin>>n>>m; for(i=1;i<=n;i+

【TensorFlow】图片预处理函数

旧城冷巷雨未停 提交于 2019-12-14 06:08:27
Python版本:3.6 TensorFlow版本:1.12.0 Matplotlib版本:3.1.1 tf.gfile.FastGFile() 读取图像 tf.image.resize_images() 图像大小调整 tf.image.resize_image_with_crop_or_pad() 图像裁剪或填充 tf.image.central_crop() 按比例调整图像 flipped = tf.image.flip_up_down(img_data) :图像上下翻转 flipped = tf.image.flip_left_right(img_data) :图像左右翻转 flipped = tf.image.transpose_image(img_data) :图像对角翻转 目录 1、tf.gfile.FastGFile() 2、tf.image.resize_images() 3、tf.resize_image_with_crop_or_pad() 4、tf.image.central_crop() 5、图像翻转 1、tf.gfile.FastGFile() 功能 :读取图片 tf.gfile.FastGFile(path,decodestyle) path :图片所在路径(如:E:/album/corgi.jpeg) decodestyle :图片的解码方式。(‘r’

卷积的含义-详解

隐身守侯 提交于 2019-12-12 08:10:53
原文链接: 点击此处看知乎原文 最近需要用到卷积对图像进行处理,不明白卷积的含义,找资料的时候在知乎找到一个很优秀的评论,特此记录一下。以下内容来自于原文复制: 对卷积的困惑 卷积这个概念,很早以前就学过,但是一直没有搞懂。教科书上通常会给出定义,给出很多性质,也会用实例和图形进行解释,但究竟为什么要这么设计,这么计算,背后的意义是什么,往往语焉不详。作为一个学物理出身的人,一个公式倘若倘若给不出结合实际的直观的通俗的解释(也就是背后的“物理”意义),就觉得少了点什么,觉得不是真的懂了。 ​并且也解释了,先对g函数进行翻转,相当于在数轴上把g函数从右边褶到左边去,也就是卷积的“卷”的由来。 然后再把g函数平移到n,在这个位置对两个函数的对应点相乘,然后相加,这个过程是卷积的“积”的过程。 这个只是从计算的方式上对公式进行了解释,从数学上讲无可挑剔,但进一步追问,为什么要先翻转再平移,这么设计有何用意?还是有点费解。 在知乎,已经很多的热心网友对卷积举了很多形象的例子进行了解释,如卷地毯、丢骰子、打耳光、存钱等等。读完觉得非常生动有趣,但过细想想,还是感觉有些地方还是没解释清楚,甚至可能还有瑕疵,或者还可以改进(这些后面我会做一些分析)。 带着问题想了两个晚上,终于觉得有些问题想通了,所以就写出来跟网友分享,共同学习提高。不对的地方欢迎评论拍砖。。。 明确一下

贯穿时域与频域的方法——傅立叶分析(直观理解+Matlab实现)

妖精的绣舞 提交于 2019-12-12 01:11:51
Q1:时域与频域是什么? 时域 故名思议就是随着时间的推移,我们所能直观感受的东西或事物,比如说音乐,我们听到动听的音乐,这是在时域上发生的事情。 而对于演奏者来说音乐是一些固定的音符,我们听到的音乐在 频域 内是一个永恒的音符,音符的个数是有限且固定的,但可以组合出无限多的乐曲。 傅立叶也告诉我们,任何周期函数都可以看作不同振幅,不同相位的正弦波的叠加。就像用音符组合出音乐一样。 贯穿时域和频域的方法之一,就是傅立叶分析,傅立叶分析又分为两个部分:傅立叶级数和傅立叶变换。 Q2:傅立叶级数是啥? 傅立叶级数 指出任何 周期函数 都可以看作不同振幅,不同相位的正弦波的叠加。 对比 傅立叶变换 :傅立叶变换指出 非周期的函数 (函数曲线下的面积是有限的)也可以用正弦或余弦乘以加权函数的积分来表示。 说的过程大概是这样子的: 在傅立叶级数中要介绍两个概念:频谱(幅度谱),相位谱。 有了这两个东西之后我们就可以更容易理解把周期函数拆分为各个正弦函数叠加的过程了。 频谱(幅度谱) 之前我们提到了时域和频域,从不同的“域”来看可能会产生很不一样的效果,到底有多不一样呢?先上个图来看一下。 可以看出,从时域来看,我们会看到一个近似为矩形的波,而我们知道这个矩形的波可以被差分为一些正弦波的叠加。 而从频域方向来看,我们就看到了 每一个正弦波的幅值 ,可以发现,在频谱中,偶数项的振幅都是0

TensorFlow(二)卷积神经网络

China☆狼群 提交于 2019-12-11 11:55:51
TensorFlow卷积神经网络 1、反向传播 几个人站成一排第一个人看一幅画(输入数据),描述给第二个人(隐层)……依此类推,到最后一个人(输出)的时候,画出来的画肯定不能看了(误差较大)。 反向传播就是,把画拿给最后一个人看(求取误差),然后最后一个人就会告诉前面的人下次描述时需要注意哪里(权值修正) 2、什么是卷积 1.已有运算:加减乘除,幂运算指数运算 卷积:卷积是一种运算 2.卷积运算 卷积操作是使用一个二维的卷积核在一个批处理的图片上进行不断扫描。具体操作是将一个卷积核在每张图片上按照一个合适的尺寸在每个通道上面进行扫描 3.卷积过程 如下图所示,用一个3 3的卷积核在5 5的图像上做卷积的过程 4.在三通道图像上的卷积过程 如下: 5.卷积函数 3、卷积函数 tf.nn.conv2d 参数一:input input就是需要做卷积的图像(这里要求用Tensor来表示输入图像,并且Tensor(一个4维的Tensor,要求类型为float32)的shape为[batch, in_height, in_width, in_channels]具体含义[训练时一个batch图像的数量,图像高度,图像宽度, 图像通道数]) 参数二:filter filter就是卷积核(这里要求用Tensor来表示卷积核,并且Tensor(一个4维的Tensor,要求类型与input相同

matplotlib 入门--12019-12-10

会有一股神秘感。 提交于 2019-12-11 03:39:18
以下是我自己搜集资料学习的matplotlib: ············································1···········pyplot····································· pyplot介绍 matplotlib.pyplot是一个有命令风格的函数集合,它看起来和MATLAB很相似。每一个pyplot函数都使一副图像做出些许改变,例如创建一幅图,在图中创建一个绘图区域,在绘图区域中添加一条线等等。在matplotlib.pyplot中,各种状态通过函数调用保存起来,以便于可以随时跟踪像当前图像和绘图区域这样的东西。绘图函数是直接作用于当前axes(matplotlib中的专有名词,图形中组成部分,不是数学中的坐标系。) 举一个简单的例子: import matplotlib.pyplot as plt plt.plot([1,2,3,4]) plt.ylabel('some numbers') plt.show() 默认情况下,该字符串参数是’b-‘,表示蓝色的实线。 import matplotlib.pyplot as plt plt.plot([1,2,3,4], [1,4,9,16], 'ro') plt.axis([0, 6, 0, 20]) plt.show() 出来的就是红色的了 ------

MATLAB实现图像的代数运算

风流意气都作罢 提交于 2019-12-10 09:18:41
文章目录 2.利用imlincomb函数将图像的灰度值放大1.5倍 3.利用imlincomb函数计算两幅图像的平均值。 4.图像的加法运算 5.利用imnoise函数对噪声进行相加运算 6.图像的减法运算 7.利用两种函数去图像的相减值和绝对值 8.降低R图像的亮度 9.图像的乘法运算 10.图像的除法运算 图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算数操作,还能为许多复杂的图像处理提供准备。例如,图像减法就可以用来检测同一场景或物体生成的两幅或多副图像的误差。可以使用MATLAB基本算数符(﹢、﹣、·、/)来执行图像的算数操作,但在此之前必须将图像转换为适合进行基本操作的双精度类型。在MATLAB中,图像运算函数无需再进行数据类型之间的转换,这些函数能够接受uint8和uint16的数据,并且返回相同格式的图像结果。 下表是一个常见的MATLAB图像运算函数集合。 常见的MATLAB图像运算函数 函数名 功能描述 Imabsdiff 用于计算两幅图像的绝对差值 imcomplement 用于补足一幅图像 imlincomb 用于计算两幅图像的线性组合 图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整形数据将被截取为数据范围的极值,分数结果将被四舍五入。无论进行哪一种代数运算都要保证两幅输入图像的大小相等,且类型相同。 ##

MATLAB实现图像的代数运算

爱⌒轻易说出口 提交于 2019-12-09 16:51:02
目录 1.使用求补运算对各类图像进行处理 2.利用imlincomb函数将图像的灰度值放大1.5倍 3.利用imlincomb函数计算两幅图像的平均值。 4.图像的加法运算 5.利用imnoise函数对噪声进行相加运算 6.图像的减法运算 7.利用两种函数去图像的相减值和绝对值 8.降低R图像的亮度 9.图像的乘法运算 10.图像的除法运算 @ 图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需的算数操作,还能为许多复杂的图像处理提供准备。例如,图像减法就可以用来检测同一场景或物体生成的两幅或多副图像的误差。可以使用MATLAB基本算数符(﹢、﹣、·、/)来执行图像的算数操作,但在此之前必须将图像转换为适合进行基本操作的双精度类型。在MATLAB中,图像运算函数无需再进行数据类型之间的转换,这些函数能够接受uint8和uint16的数据,并且返回相同格式的图像结果。 下表是一个常见的MATLAB图像运算函数集合。 常见的MATLAB图像运算函数 函数名 功能描述 Imabsdiff 用于计算两幅图像的绝对差值 imcomplement 用于补足一幅图像 imlincomb 用于计算两幅图像的线性组合 图像的代数运算函数使用以下截取规则使运算结果符合数据范围的要求:超出数据范围的整形数据将被截取为数据范围的极值,分数结果将被四舍五入