更多darknet训练图像分类图像预处理

random_augment_image()

image random_augment_image(image im, float angle, float aspect, int low, int high, int size)
{aspect = rand_scale(aspect);int r = rand_int(low, high);int min = (im.h < im.w*aspect) ? im.h : im.w*aspect;float scale = (float)r / min;float rad = rand_uniform(-angle, angle) * 2.0 * M_PI / 360.;float dx = (im.w*scale/aspect - size) / 2.;float dy = (im.h*scale - size) / 2.;if(dx < 0) dx = 0;if(dy < 0) dy = 0;dx = rand_uniform(-dx, dx);dy = rand_uniform(-dy, dy);printf("random_augment_image rad: %f, scale: %f, size: %d,dx:%f,dy:%f,aspect:%f\n", rad, scale, size, dx, dy,aspect);image crop = rotate_crop_image(im, rad, scale, size, size, dx, dy, aspect);return crop;
}

1.random_gen

实现如下:

unsigned int random_gen()
{unsigned int rnd = 0;
#ifdef WIN32rand_s(&rnd);
#else   // WIN32rnd = rand();
#if (RAND_MAX < 65536)rnd = rand()*(RAND_MAX + 1) + rnd;
#endif  //(RAND_MAX < 65536)
#endif  // WIN32return rnd;
}

其中:

 errno_t rand_s( unsigned int* randomValue );

函数的参数是一个整型的指针,指向一个用于接收随机数的整数类型;生成的随机数范围是 0-UINT_MAX。

函数成功的话,返回值是 0;否则的话返回错误代码。

因此,random_gen()生成并返回一个int型的随机数。

2.rand_uniform_strong

rand_uniform_strong()产生min到max之间一个随机值

float rand_uniform_strong(float min, float max)
{if (max < min) {float swap = min;min = max;max = swap;}return (random_float() * (max - min)) + min;
}

random_float()产生一个float类型随机值。

3.rand_scale()

float rand_scale(float s)
{float scale = rand_uniform_strong(1, s);if(random_gen()%2) return scale;return 1./scale;
}

rotate_crop_image

字面意思理解:旋转裁剪图片

image rotate_crop_image(image im, float rad, float s, int w, int h, float dx, float dy, float aspect)
{int x, y, c;float cx = im.w/2.;float cy = im.h/2.;image rot = make_image(w, h, im.c);for(c = 0; c < im.c; ++c){for(y = 0; y < h; ++y){for(x = 0; x < w; ++x){float rx = cos(rad)*((x - w/2.)/s*aspect + dx/s*aspect) - sin(rad)*((y - h/2.)/s + dy/s) + cx;float ry = sin(rad)*((x - w/2.)/s*aspect + dx/s*aspect) + cos(rad)*((y - h/2.)/s + dy/s) + cy;float val = bilinear_interpolate(im, rx, ry, c);set_pixel(rot, x, y, c, val);}}}return rot;
}

计算rx,ry啥意思?

bilinear_interpolate

双线性插值

float bilinear_interpolate(image im, float x, float y, int c)
{int ix = (int) floorf(x);int iy = (int) floorf(y);float dx = x - ix;float dy = y - iy;float val = (1-dy) * (1-dx) * get_pixel_extend(im, ix, iy, c) +dy     * (1-dx) * get_pixel_extend(im, ix, iy+1, c) +(1-dy) *   dx   * get_pixel_extend(im, ix+1, iy, c) +dy     *   dx   * get_pixel_extend(im, ix+1, iy+1, c);return val;
}

get_pixel_extend()

static float get_pixel_extend(image m, int x, int y, int c)
{if (x < 0 || x >= m.w || y < 0 || y >= m.h) return 0;if (c < 0 || c >= m.c) return 0;return get_pixel(m, x, y, c);
}

get_pixel()

static float get_pixel(image m, int x, int y, int c)
{assert(x < m.w && y < m.h && c < m.c);return m.data[c*m.h*m.w + y*m.w + x];
}

darknet图像预处理函数random_augment_image研究相关推荐

  1. 训练图像预处理函数功能(paddle)

    简 介: 尽管我们可以通过 下面命令获得paddle.vision.transforms中的所有的函数.那么这些函数的具体使用说明如何能够获得呢? 关键词: 数据预处理,paddle,vision,t ...

  2. 『TensorFlow』第九弹_图像预处理_不爱红妆爱武装

    部分代码单独测试: 这里实践了图像大小调整的代码,值得注意的是格式问题: 输入输出图像时一定要使用uint8编码, 但是数据处理过程中TF会自动把编码方式调整为float32,所以输入时没问题,输出时 ...

  3. darknet训练图像分类图像预处理random_distort_image研究

    更多darknet训练图像分类图像预处理 random_distort_image() void random_distort_image(image im, float hue, float sat ...

  4. 计算机表情识别技术研究学什么,表情识别的图像预处理和特征提取方法研究

    表情识别的图像预处理和特征提取方法研究 表情识别是基于视觉信息将脸部的运动或脸部特征的形变进行分类,包括三部分:脸部定位.脸部特征抽取和表情分类.本文首先使用肤色模型进行脸部定位;对提取出来的人脸进 ...

  5. 一阶微分算子锐化图像_【动手学计算机视觉】第三讲:图像预处理之图像分割...

    本讲完整代码>> 前言 图像分割是一种把图像分成若干个独立子区域的技术和过程.在图像的研究和应用中,很多时候我们关注的仅是图像中的目标或前景(其他部分称为背景),它们对应图像中特定的.具有 ...

  6. opencv ocr字符识别_OCR深度实践系列:图像预处理

    近一个半月时间没更了,在这段时间里针对OCR业务进行了深入研究,业务也已上线,谨以此篇作为OCR系列的开篇. 目前NLP+OCR的落地应用在市场上愈加火热,如金融领域的研报分析.司法领域的合同审核甚至 ...

  7. matlab指纹图像采集,基于MATLAB实现的指纹图像预处理

    西南民族大学学报·自然科学版第 34 卷第 4 期 Journal of Southwest University for Nationalities⋅Natural Science Edition ...

  8. 图像预处理库CV-CUDA开源了,打破预处理瓶颈,提升推理吞吐量20多倍

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:思 当 CPU 图像预处理成为视觉任务的瓶颈,最新开源的CV ...

  9. CV基础(图像预处理)

    文章目录 CV基础 1.课程概述 1.1 计算机视觉的研究理论和应用 1.2 主要研究维度 Tips tensorflow基础 图像预处理 1.颜色空间和图片处理 1.1彩色的三要素 1.2.基本颜色 ...

最新文章

  1. HPAIC人类蛋白质图谱分类挑战赛金牌经验分享
  2. 15 分钟带你入门 sklearn 与机器学习(分类算法篇)
  3. OS / linux / 互斥锁实现原理(futex)
  4. 67、ulimit的使用
  5. staf工作笔记-扩展stax官方实例的补坑说明
  6. Gson 转化为带反斜杠的json
  7. android cmd里查看systemapp剩余空间不足,解决emui系统内部存储空间不足的办法
  8. python 控制 cmd 命令行颜色
  9. 数据库执行自定义函数报错问题记录
  10. STM8S003F3 使用ADC:固件库版本与寄存器版本
  11. [渝粤教育] 宁波财经学院 金融工程学 参考 资料
  12. 哈希表的应用之电话本
  13. [高考作文] 秋细雨VS叶闲花
  14. kali linux系统下安装 VMware Tools
  15. matlab 图像处理之Refined Lee滤波
  16. html用来注释的标记,互联网常识:html的注释标记是什么
  17. 微软怎么设计Exchange 2003的体系结构
  18. VBA和Python双语对照,Excel编程学习更简单
  19. linux下jdk的安装与配置jdk-6u45-linux-i586.bin
  20. 百度,你能不能有点节操?

热门文章

  1. [SV]SystemVerilog進程之fork join专题详解及案例分析
  2. 【马士兵】Python基础--01
  3. 玫瑰李文案:玫瑰李水果店的文案怎么写
  4. 拉钩教育高薪训练营学习笔记
  5. 默认计算机网络密码是多少,tplogin.cn初始密码是多少 tplogin管理密码一般是多少...
  6. Flutter 中文文档:Flutter 应用里的国际化
  7. [茶香人家:原创资料]岩茶基础名词图解
  8. 大学人工智能专业应该怎么学
  9. vue项目中常用methods
  10. 计算机专业屏幕尺寸,电脑屏幕尺寸怎么看