![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图像处理(image processing)
跬步达千里
深度学习 图像处理 tensorflow caffe python C++
展开
-
对keras训练过程中loss,val_loss,以及accuracy,val_accuracy的可视化
hist = model.fit_generator(generator=data_generator_reg(X=x_train, Y=[y_train_a,y_train_g], batch_size=batch_size), steps_per_epoch=train_num // batch_size, ...原创 2019-04-18 17:09:15 · 20674 阅读 · 7 评论 -
facenet chinese whispers(face cluster)
facenet face cluster chinese whispers原创 2017-04-21 11:11:18 · 10411 阅读 · 5 评论 -
Joint Cascade Face Detection and Alignment流程
论文Joint Cascade Face Detection and Alignment记录前言 现在人脸检测用深度学习甩传统方法一大截,但是记录下这篇文章,主要是看看思想(看文章时间较短,只有一天,有些地方可能有误): 这篇文章,使用级联树,将分类与回归都完成,使用的是局部二值特征,local binary feature,计算简单,高效,最后得到结果也还可以,但是也存在一定的问题: 参数难原创 2017-08-24 17:40:07 · 1744 阅读 · 0 评论 -
视频质量诊断
http://www.cnblogs.com/v2m_/archive/2011/03/01/1967958.html转载 2016-06-23 14:23:24 · 808 阅读 · 0 评论 -
在android下使用opencv
网上百度了一下怎么在eclipse下搭建opencv编程环境,发现相当麻烦。这里介绍一下我遇到一个相对简单点的方法: 1 首先需要搭建Android开发环境,关键搭建eclipse下的android开发环境,网上一大堆,主要的步骤就是: a 安装eclipse b 安装android SDK,ADT2 进入opencv官网下载opencv4Android,主要包含以下几个文件夹:apk,doc原创 2016-07-03 14:14:52 · 849 阅读 · 0 评论 -
基础矩阵、本质矩阵、单应性矩阵、透射变换、仿射变换
再讲下基本矩阵,存在这么一个矩阵F,使得空间中不在两图像平面上的任意点X分别在两图像的投影坐标x,x'满足等式(x')T*F*x=0,即x'的转置乘以F,再乘以x的结果为0,那么F就是左边图像到右边图像的基本矩阵,从公式上可以看出基本矩阵是有方向的,右图到左图的基本矩阵就是F的转置。F矩阵有如下性质:1、秩为2;2、F矩阵是一个7个自由度的3*3矩阵(3*3矩阵本身9个自由度,因为相差一个常数因转载 2016-07-25 15:38:13 · 7960 阅读 · 0 评论 -
CNN中的一些概念
池化层往往跟在卷积层后面。通过平均池化或者最大池化的方法将之前卷基层得到的特征图做一个聚合统计。假设L层的卷积层得到的某一特征图有100*100这么大的尺寸。选一个2*2的区域做不重叠的最大池化,池化层会输出50*50那么大的图,达到降低数据量的目的。因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。例如,卷积层输出的特征图中两个相连的点的特征原创 2016-06-29 10:26:03 · 667 阅读 · 0 评论 -
用于求两个向量之间的距离
http://blog.csdn.net/shiwei408/article/details/7602324转载 2016-05-21 11:31:48 · 4286 阅读 · 0 评论 -
opencv相关
http://blog.csdn.net/poem_qianmo/article/details/21479533#转载 2016-05-19 16:50:03 · 765 阅读 · 0 评论 -
Retinex门外汉入门
对于较高深的数学概念、推导之类较繁琐,因此,在博客中专门转载能够较好的讲解相关内容的资料、博客。http://www.cnblogs.com/Imageshop/archive/2013/04/17/3026881.html转载 2016-05-18 09:38:28 · 599 阅读 · 0 评论 -
常见数学函数
1 幂函数 2 指数函数3 对数函数4 三角函数5 反三角函数6 双曲函数7 反双曲函数原创 2016-05-19 09:16:19 · 661 阅读 · 0 评论 -
尝试自己写简单的retinex
#include "opencv2/opencv.hpp"#include #include #include #include #include using namespace std;using namespace cv;//image是原始图像,conv是原始图像加卷积后的图像,deconv是解卷积后的图像int deconvolution(Mat原创 2016-05-18 18:11:41 · 1019 阅读 · 0 评论 -
opencv中yuv420的存储方式
opencv中yuv420存储方式是平面的方式,即u分量和v分量是分开存储的,即为yuv420p而华为海思芯片中也有yuv420,但是该yuv是420sp,u和v是在一起存储,一个u后面必然跟着一个vlliyuanzh@162.com原创 2016-05-18 18:01:56 · 1830 阅读 · 0 评论 -
opencv获取图像的指针
获取图像的指针Mat a=Mat::zeros(1,14,CV_32FC1);float* ptr=a.ptr(0);以后就可以像访问数组一样,来访问ptr获得图像的某一行的指针Mat a=img.row(i);代表获得的是第i行,而如果访问变成img.rows,即多了一个s,那么就返回图像的行数上面都是获得某一行的指针,但是区别在于,ptr返回的类型是Ma原创 2016-05-18 17:59:52 · 3488 阅读 · 0 评论 -
opencv中Mat的一些常见操作
opencv中的Mat由两个数据部分组成:1 矩阵头(包含矩阵的尺寸,存储方法,存储地址等信息),矩阵头的尺寸是常数值2 指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针以下操作会说明了矩阵的内存操作:Mat A,C;//只创建信息头部分A = imread();//这里为矩阵开辟内存Mat B(A);//使用拷贝构造函数,B和A的信息头原创 2016-05-18 17:58:16 · 742 阅读 · 0 评论 -
opencv用指定核滤波
//opencv中用指定核去滤波较简单,只需要先指定滤波所用的核,然后调用opencv相应的函数即可Mat pro;Mat kern=(Mat_(3,3)0,0,0,-1,-1,-1);filter2D(getrecrgray,pro,getrecrgray.depth(),kern);convertScaleAbs(pro,pro);原创 2016-05-18 17:51:54 · 981 阅读 · 0 评论 -
opencv编译contrib部分
1 先在官网下载opencv2 在网址:https://github.com/Itseez/opencv_contrib下载contrib部分的代码3 下载cmake gui:http://www.cmake.org/cmake/resources/software.html然后按照以下步骤进行:打开cmake-gui在where is the source cod原创 2016-05-27 17:24:00 · 1473 阅读 · 0 评论 -
opencv的change log
https://github.com/Itseez/opencv/wiki/ChangeLog转载 2016-05-27 16:08:46 · 525 阅读 · 0 评论 -
40个图像处理开源库
40个图像处理开源库:Face Recognition - 拉姆达实验室斯蒂芬弄的。示例代码和图形演示点击http://api.lambdal.com/docs,我们的API提供了面部识别,面部检测,眼睛定位,鼻子定位,嘴巴定位,和性别分类。如果您有任何疑问,只需发一封邮件到s@lambdal.com。Face (Detection) - 计算机视觉面部识别和面部检测。这是一个完原创 2016-05-27 10:31:24 · 4325 阅读 · 0 评论 -
图像白平衡
白平衡 白平衡并不是数码摄影特有的东西,胶片也有白平衡,只不过胶片的白平衡是预设的,如钨丝灯型胶卷在钨丝灯光源的照射下拍出的照片就可以有正确的白平衡。换句话说,在胶片时代,摄影师根据光源的不同而选择不同的胶片就是在“调节”白平衡了。但数码技术允许我们后期几乎不受限制地的白平衡,无疑它要灵活得多,给摄影师提供了更多的创作手段。 白平衡的本质是让白色的物体在任何颜色的光转载 2016-06-01 17:42:22 · 908 阅读 · 0 评论 -
opencv的convertTo和normalize
opencv的这两个函数都可以对矩阵进行变换,normalize可以对矩阵进行范数归一化,也可以对矩阵进行线性变换(线性拉伸或者线性压缩):当使用线性拉伸或者线性压缩的时候,使用方法如下: normalize(src,src,0,255,NORM_MINMAX);该方法的意义是,如果你的src的最大值最小值比如在128和200,那么,使用该函数后,将把整个src的值进行线原创 2016-06-23 17:38:18 · 2565 阅读 · 0 评论 -
最陌生的老朋友Softmax Loss
Softmax Loss Max Margin转载 2017-08-11 17:12:43 · 8421 阅读 · 0 评论 -
tensorflow调参总结(不断更新中)
slim batch norm fine tune原创 2017-04-25 11:38:21 · 13907 阅读 · 5 评论 -
center loss代码注释(caffe新添加层)
#include <vector>#include "caffe/layers/center_loss_layer.hpp"#include "caffe/util/math_functions.hpp"namespace caffe{ template<typename Dtype> void CenterLossLayer<Dtype>::LayerSetUp(const ve原创 2017-03-03 14:46:52 · 5230 阅读 · 3 评论 -
caffe group参数
caffe Convolution层的convolution_param参数字典中有一个group参数,其意思是将对应的输入通道与输出通道数进行分组,比如输入数据大小为90x100x100x32 90是数据批大小 100x100是图像数据shape,32是通道数,要经过一个3x3x48的卷积,group默认是1,就是全连接的卷积层,如果group是2,那么对应要将输入的32个通道分成2个1原创 2017-04-27 15:48:42 · 10343 阅读 · 12 评论 -
facenet_train.py代码注释
"""Training a face recognizer with TensorFlow based on the FaceNet paperFaceNet: A Unified Embedding for Face Recognition and Clustering: http://arxiv.org/abs/1503.03832"""# MIT License# # Copyri原创 2017-05-08 18:08:53 · 7880 阅读 · 5 评论 -
tf moving average
批处理 ,滑动平均, moving average原创 2017-04-24 15:59:38 · 3641 阅读 · 5 评论 -
caffe卷积原理
转载网址:http://blog.csdn.net/xiaoyezi_1834/article/details/50786363Caffe中的卷积计算是将卷积核矩阵和输入图像矩阵变换为两个大的矩阵A与B,然后A与B进行矩阵相乘得到结果C(利用GPU进行矩阵相乘的高效性),三个矩阵的说明如下:(1)在矩阵A中 M为卷积核个数,K=k*k,等于卷积核大小,即第一个转载 2017-02-28 15:29:48 · 485 阅读 · 0 评论 -
python spyder中读取txt为图片
有时候需要将一个环境中的图片可视化,但是可能这个环境下不方便,因此需要将这个环境下的图像数据保存下来,然后在另一个环境下查看,比如,有一个图像数据,image.txt,里面的数据是图像的像素值,范围是0-255,像素值之间以空格键分开,行与行之间是回车键分开,那么在Python Spyder环境下通过简单的几条语句就搞定:import numpyfrom skimage imp原创 2017-01-18 14:19:37 · 2920 阅读 · 0 评论 -
opencv中step[i],step1(i),elemsize,elemsize1
首先需要确定的一点是,step[i],step1(i),elemsize,elemsize1都是指的字节数1 opencv中Mat类的elemsize是每个元素的字节数,如果一个图像是3通道,每个通道是16位,那么 其elemsize就是3*(16/8)=6,即每个元素占6个字节 2 opencv中Mat类的elemsize1是指每个元素每个通道所占的字节数,对应于上面就是2个字节3 ope转载 2016-10-25 15:29:08 · 2170 阅读 · 1 评论 -
模板类的特例定义
opencv中有一个模板类DataType,该函数定义如下: 该类有自己的模板_Tp,但是如果有某一个类型需要与这个类的内部定义有区别怎么办,可以重新将该类型下的类进行再次定义: 另外,对于模板类,如果对应的某个特例类型下,有某个函数与其他函数不一致,也可以自己重新申明,并给出定义(下面给出了其申明,没有给出定义,查看定义可以去opencv源码中查找,这里未给出): 该函数重新定义了P原创 2016-08-26 10:24:22 · 771 阅读 · 0 评论 -
opencv访问图像
opencv访问图像有几个常见的方法: 1 通过at方法:Mat image(Size(height,width),CV_8UC1);image.at<uchar>(y,x)2 通过at使用point方法:image.at<uchar>(cv::Point2d(x,y))3 如果提前知道image的类型,比如知道是为uchar://当为单通道时Mat_<uchar> image(height,原创 2016-06-30 17:14:43 · 530 阅读 · 0 评论 -
摄像机内参、外参矩阵
摄像机矩阵由P由内参矩阵和外参矩阵组成,对摄像机矩阵进行QR分解可以得到内参矩阵和外参矩阵在opencv的3D重建中(opencv中文网站中:照相机定标与三维场景重建),对摄像机的内参外参有讲解: 外参:摄像机的旋转平移属于外参,用于描述相机在静态场景下相机的运动,或者在相机固定时,运动物体的刚性运动 内参:下面给出了内参矩阵,需要注意的是,真实的镜头还会有径向和切向畸变,而这些畸变是属于相机的原创 2016-07-27 11:09:28 · 33098 阅读 · 8 评论 -
opengl的一些基本概念与opencl
opengl:下面的网站中讲解了opengl和gpu之间的一些共通的概念http://blog.csdn.net/luyuncsd123/article/details/13612903下面的网站给出了一些opengl调用的一些基本调用http://my.oschina.net/sweetdark/blog/214220opencl:下面的网站给出了open转载 2016-08-01 10:59:27 · 592 阅读 · 0 评论 -
无监督特征学习——Unsupervised feature learning and deep learning
无监督学习近年来很热,先后应用于computer vision, audio classification和 NLP等问题,通过机器进行无监督学习feature得到的结果,其accuracy大多明显优于其他方法进行training。本文将主要针对Andrew的unsupervised learning,结合他的视频:unsupervised feature learning by转载 2016-07-09 18:03:28 · 889 阅读 · 0 评论 -
opencv的setTo函数
opencv的setTo函数是将图像设置为某个值,比如有一个Mat src,想将他的值全部设置成0,则可以src.setTo(0)另外,setTo还有更为高级的用法,比如,对于一个已知的src,我们要将其中大于或者小于某个值的像素值设置为指定的值,则可以如下:src.setTo(0,src < 10);这句话的意思是,当src中的某个像素值小于10的时候,就将该值设置成0.还有一点,这是自己原创 2016-06-23 17:58:16 · 14925 阅读 · 1 评论 -
opencv的sort、sortIdx函数
opencv的sort函数是将图像进行排序,可以根据列或者行,按照升序或者降序对矩阵进行重新排序,如果想将整个图像进行排序,则可以:Mat flat; tmpsplit; tmpsplit.reshape(1,1).copyTo(flat); cv::sort(flat,flat,CV_SORT_EVERY_ROW + CV_SORT_ASCENDING);另外,opencv还有另外一个函原创 2016-06-23 17:50:56 · 14381 阅读 · 0 评论