图像梯度

图像处理的傅里叶变换理解

时间秒杀一切 提交于 2020-02-11 22:50:49
傅立叶变换在图像处理中有非常非常的作用。因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法, 比如离散余弦变换,gabor与小波在图像处理中也有重要的分量。 印象中,傅立叶变换在图像处理以下几个话题都有重要作用: 1.图像增强与图像去噪 绝大部分噪音都是图像的高频分量,通过低通滤波器来滤除高频——噪声; 边缘也是图像的高频分量,可以通过添加高频分量来增强原始图像的边缘; 2.图像分割之边缘检测 提取图像高频分量 3.图像特征提取: 形状特征:傅里叶描述子 纹理特征:直接通过傅里叶系数来计算纹理特征 其他特征:将提取的特征值进行傅里叶变换来使特征具有平移、伸缩、旋转不变性 4.图像压缩 可以直接通过傅里叶系数来压缩数据;常用的离散余弦变换是傅立叶变换的实变换; 傅立叶变换 傅里叶变换是将时域信号分解为不同频率的正弦信号或余弦函数叠加之和。连续情况下要求原始信号在一个周期内满足绝对可积条件。离散情况下,傅里叶变换一定存在。冈萨雷斯版<图像处理>里面的解释非常形象:一个恰当的比喻是将傅里叶变换比作一个玻璃棱镜。棱镜是可以将光分解为不同颜色的物理仪器,每个成分的颜色由波长(或频率)来决定。傅里叶变换可以看作是数学上的棱镜,将函数基于频率分解为不同的成分。当我们考虑光时,讨论它的光谱或频率谱。同样,傅立叶变换使我们能通过频率成分来分析一个函数。 傅立叶变换有很多优良的性质。比如线性

OpenCV--图像梯度处理

对着背影说爱祢 提交于 2020-02-10 16:05:41
图像梯度-Sobel算子 img = cv2.imread('pie.png',cv2.IMREAD_GRAYSCALE) cv2.imshow("img",img) cv2.waitKey() cv2.destroyAllWindows() 效果: dst = cv2.Sobel(src, ddepth, dx, dy, ksize) ddepth:图像的深度 dx和dy分别表示水平和竖直方向 ksize是Sobel算子的大小 def cv_show(img,name): cv2.imshow(name,img) cv2.waitKey() cv2.destroyAllWindows() sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3) cv_show(sobelx,'sobelx') 效果: sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3) sobelx = cv2.convertScaleAbs(sobelx) #白到黑是正数,黑到白就是负数了,所有的负数会被截断成0,所以要取绝对值 cv_show(sobelx,'sobelx') 效果: sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3) sobely = cv2.convertScaleAbs

图像处理

与世无争的帅哥 提交于 2020-02-09 01:41:57
# -*- coding: utf-8 -*- """ Created on Mon Sep 24 18:23:04 2018 @author: zy """ # 代码来源GitHub:https://github.com/PENGZhaoqing/Hog-feature # https://blog.csdn.net/ppp8300885/article/details/71078555 # https://www.leiphone.com/news/201708/ZKsGd2JRKr766wEd.html import cv2 import numpy as np import math import matplotlib.pyplot as plt class Hog_descriptor(): ''' HOG描述符的实现 ''' def __init__(self, img, cell_size=8, bin_size=36): ''' 构造函数 默认参数,一个block由2x2个cell组成,步长为1个cell大小 args: img:输入图像(更准确的说是检测窗口),这里要求为灰度图像 对于行人检测图像大小一般为128x64 即是输入图像上的一小块裁切区域 cell_size:细胞单元的大小 如8,表示8x8个像素 bin_size:直方图的bin个数 ''' self

图像特征提取三大法宝:HOG特征,LBP特征,Haar特征

喜欢而已 提交于 2020-02-07 04:46:25
图像特征提取三大法宝:HOG特征,LBP特征,Haar特征 (一)HOG特征 1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。 (1)主要思想: 在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。 (2)具体的实现方法是: 首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。 (3)提高性能: 把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对比度归一化(contrast-normalized),所采用的方法是:先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化

大白话解读梯度下降法解决一元线性回归

我是研究僧i 提交于 2020-02-07 01:49:37
1.一元线性回归与损失函数 在我们解决一元线性回归进行拟合曲线的时候,常常会使用梯度下降法。 假设我们的数据集为 # 训练数据 x_train = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) y_train = np.array([1, 3, 4, 5, 6, 7, 8, 9, 10]) 我们想将其拟合成一条曲线,然后进行训练。拟合曲线表示如下 我们如何去拟合呢?显然两点确定一条直线的。我们就其次,然后求得一个函数,各个点到该函数的方差和最小,于是,我们将其称为损失函数(也叫代价函数、目标函数),该函数如下 该方程为凸函数,并且有极小值。 2.梯度下降法求解最小值 我们解决一个函数的最小值的时候,往往会想到使用导数来求。但是,在多维数据,或者大数据情况下,这种求解方法不适用。 于是,我们有了一个新的方法。 例题:求解y = x^2的极小值 1.我们可以随机取一个点m,假设取到了10, 那么我们显然偏离了,我们进行计算,发现y = 10^2=100,偏右边了怎么办呢? 2.我们将m减去导数,得到100-2*10,靠近了一点点,我们反复取值,即可靠近最低点。 3.在机器学习中,往往允许的误差是极小的,所以,我们应该将m乘上一个alpha值,这个值是学习率,学习率越低,往往拟合函数越好,但是也不是无限低的。 3.梯度下降求解一元线性回归 我们将梯度下降

机器学习之线性回归

99封情书 提交于 2020-02-07 01:01:04
1.什么是线性回归 线性回归,首先要介绍一下机器学习中的两个常见的问题:回归任务和分类任务。那什么是回归任务和分类任务呢?简单的来说,在监督学习中(也就是有标签的数据中),标签值为连续值时是回归任务,标志值是离散值时是分类任务。 线性回归模型就是处理回归任务的最基础的模型。 线性回归模型试图学得一个线性模型以尽可能准确地预测实值X的输出标记Y。在这个模型中,因变量Y是连续的,自变量X可以是连续或离散的。 首先来了解一些字母的含义:m-训练集样本的数量;x-输入变量/特征;y-输出变量/要预测的目标变量;(x,y)-表示一个训练样本;( x ( i ) x^{(i)} x ( i ) , y ( i ) y^{(i)} y ( i ) )中i上标:表示第i个训练样本,即表示表格中的第i行; x 1 x_{1} x 1 ​ 、 x 2 x_{2} x 2 ​ 、… x n x_{n} x n ​ 表示特征向量,n表示特征向量的个数; h θ h_{\theta} h θ ​ (x)称为假设函数,h是一个引导从x得到y的函数; 举个简单的例子: 输入数据:工资( x 1 x_{1} x 1 ​ )和房屋面积( x 2 x_{2} x 2 ​ )(两个特征) 输出目标:预测银行会贷款多少钱(标签) 姓名 工资 房屋面积 可贷款金额 张三 6000 58 33433 李四 9000 77

译文:FishNet

好久不见. 提交于 2020-02-05 04:31:05
FishNet: 用于图像、区域和像素级的多功能主干网络 摘要 对于预测不同层级的目标对象(如图像级、区域级和像素级),设计卷积神经网络( CNN )结构的基本原则具有多样性。一般来讲,专门为图像分类任务所设计的网络结构,会默认作为其他任务(包括检查和分割)的主干网络结构。但是,多数网络的主干设计并没有考虑统一网络的优势,而为像素级或区域级的预测任务设计主干网络,原因可能是需要更高分辨率的深层特征。为了实现这一目标,本文设计了一个类似鱼形的主干网络,我们称为 FishNet 。在 FishNet 中,所有的解决方案信息都会被保留,并在最后的任务进行精炼。除此之外,我们观察到,现存的工作并不能直接将梯度信息从深层网络传递给浅层网络,而本文的设计可以更好地处理该问题。为了验证 FishNet 的性能表现,我们进行了大量实验。特别地,在 ImageNet-1k 数据集上,在参数较少的情况下, FishNet 的性能可以完全超过 DenseNet 和 ResNet 。 FishNet 已经被应用在赢得 2018 年 COCO 检测挑战赛的一个模块中。代码被公开在: https://github.com/kevin-ssy/FishNet 。 1 简介 在计算机视觉领域中,卷积神经网络( CNN , Convolutional Neural Network

cv2小记——图像梯度

99封情书 提交于 2020-02-04 06:25:58
# coding: utf-8 # !/usr/bin/python """ @File : 图像梯度.py @Author : jiaming @Modify Time: 2020/2/3 12:13 @Contact : https://blog.csdn.net/weixin_39541632 @Version : 1.0 @Desciption : 图像梯度、图像边界 cv2.Sobel() cv2.Schar() cv2.Laplacian() """ import os import sys import numpy as np import cv2 import pprint from matplotlib import pyplot as plt rawPath = os . path . abspath ( __file__ ) currentFile = os . path . basename ( sys . argv [ 0 ] ) dataPath = rawPath [ : rawPath . find ( currentFile ) ] + r 'static\\' """ OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel、 Scharr、 Laplacian """ """ Sobel 算子和 Scharr 算子 Sobel

激活函数篇(Sigmoid、tanh、ReLU、PReLU)

ⅰ亾dé卋堺 提交于 2020-02-04 01:50:58
写在前面:此文只记录了下本人感觉需要注意的地方,不全且不一定准确。详细内容可以参考文中帖的链接,比较好!!! 常用激活函数(激励函数)理解与总结 激活函数的区别与优点 梯度消失与爆炸 1. 激活函数是什么? 在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。 2. 激活函数的用途 如果不用激活函数,每一层的输入都是上一层输出的线性函数,而多层线性函数与一层线性函数的功能是等价的,网络的逼近能力就相当有限,因此引入非线性函数作为激励函数,使得深层神经网络的可以更好的逼近任意函数。 3. 常见的激活函数: Sigmoid 函数: 表达形式: f ( z ) = 1 1 + e − z f(z) = \frac{1}{1+e^{-z}} f ( z ) = 1 + e − z 1 ​ 函数图像: 导数图像: 优缺点: 优点 能够把输入的连续值压缩到【0~1】之间,可解释性强,0为不活跃,1为活跃 缺点 梯度反向传递时,容易导致梯度的爆炸和消失(大概率梯度消失,有时梯度爆炸)。 而由于 σ ( z ) \sigma (z) σ ( z ) 最大值为0.25,且通常初始| w | < 1 ,则有: 极易出现梯度消失;当初始化 |w| > 4 时,w * σ ( z ) \sigma (z) σ ( z ) > 1 ,才会产生梯度爆炸。

【TensorFlow】激活函数(Activation Functions)原理解析(十二)

给你一囗甜甜゛ 提交于 2020-02-02 06:00:49
神经网络结构的输出为所有输入的加权和,这导致整个神经网络是一个线性模型。如果将每一个神经元的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性的了,使得神经网络可以更好地解决较为复杂的问题。这个非线性函数也就是 激活函数 。 神经网络中激活函数的主要作用是提供网络的非线性建模能力,如不特别说明,激活函数一般而言是非线性函数。假设一个示例神经网络中仅包含线性卷积和全连接运算,那么该网络仅能够表达线性映射,即便增加网络的深度也依旧还是线性映射,难以有效建模实际环境中非线性分布的数据。加入(非线性)激活函数之后,深度神经网络才具备了分层的非线性映射学习能力。因此,激活函数是深度神经网络中不可或缺的部分。 从定义来看,几乎所有的连续可导函数都可以用作激活函数。但目前常见的多是分段线性和具有指数形状的非线性函数。下文将依次对它们进行总结。 TensorFlow提供的激活函数有: 详见官方文档 1、tf.nn.relu(features, name=None) 2、tf.nn.relu6(features, name=None) 3、tf.nn.softplus(features, name=None) 4、tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None) 5、tf.nn.bias_add