https://www.cnblogs.com/wangyblzu/p/5710715.html

HSV和RGB一样是一种图像的颜色模型,h表示色调,s表示饱和度

1.RandomHue

void RandomHue(const cv::Mat& in_img, cv::Mat* out_img,
const float hue_prob, const float hue_delta) {
float prob;
caffe_rng_uniform(, .f, .f, &prob);
if (prob < hue_prob) {
   以一定概率进行色调调整
CHECK_GE(hue_delta, ) << "hue_delta must be non-negative.";
float delta;
caffe_rng_uniform(, -hue_delta, hue_delta, &delta);
AdjustHue(in_img, delta, out_img);
} else {
*out_img = in_img;
}
}

需要先把rgb图转成hsv图,然后对第一个通道也就是h的通道的每个值加上delta,最后再换转成rgb图

void AdjustHue(const cv::Mat& in_img, const float delta, cv::Mat* out_img) {
if (fabs(delta) > ) {
// Convert to HSV colorspae.
cv::cvtColor(in_img, *out_img, CV_BGR2HSV); // Split the image to 3 channels.
vector<cv::Mat> channels;
cv::split(*out_img, channels); // Adjust the hue.
channels[].convertTo(channels[], -, , delta);
cv::merge(channels, *out_img); // Back to BGR colorspace.
cvtColor(*out_img, *out_img, CV_HSV2BGR);
} else {
*out_img = in_img;
}
}

2.RandomSaturation

void RandomContrast(const cv::Mat& in_img, cv::Mat* out_img,
const float contrast_prob, const float lower, const float upper) {
float prob;
caffe_rng_uniform(, .f, .f, &prob);
if (prob < contrast_prob) {
CHECK_GE(upper, lower) << "contrast upper must be >= lower.";
CHECK_GE(lower, ) << "contrast lower must be non-negative.";
float delta;
caffe_rng_uniform(, lower, upper, &delta);
AdjustContrast(in_img, delta, out_img);
} else {
*out_img = in_img;
}
}

RandomSaturation做的是让通道里每个像素值乘以一个数,RandomHue是加一个数,这和RandomBrightness和RandomContrast的区别是一样的

void AdjustContrast(const cv::Mat& in_img, const float delta,
cv::Mat* out_img) {
if (fabs(delta - .f) > 1e-) {
in_img.convertTo(*out_img, -, delta, );
} else {
*out_img = in_img;
}
}

最新文章

  1. 利用其它带文件防护功能的软件防止*.asp;*.jpg写入文件。
  2. 利用Quartz2D推图的另一个方法 (使用CGMutalePathRef进行分层次)
  3. [LeetCode] Search Insert Position
  4. NV Maxwell architecture
  5. DB2数据库中SQL语句中使用or和and的关键字的时候注意事项
  6. ZOJ3231 Apple Transportation(最小费用流)
  7. Ajax之旅(一)--什么是Ajax
  8. 使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法
  9. JVM -- CMS
  10. (转)iOS项目的目录结构和开发流程
  11. floor()函数 向下取整 ceil()函数向上取整
  12. bzoj 2286 [Sdoi2011]消耗战 虚树+dp
  13. iOSImagesExtractor for mac 快速拿到iOS应用中所有的图片资源
  14. POJ 1755 Triathlon [半平面交 线性规划]
  15. openFileDialog的Filter属性设置
  16. c#泛型约束 (where T:class)
  17. Django的View(视图)
  18. 解决操作WordPress时提示输入FTP信息
  19. python创建__init.py__文件导入模块仍然报错ModuleNotFoundError: No module named 'name'
  20. ORACLE中的字符串替换 replce、regexp_replace 和 translate

热门文章

  1. scanf()函数的注意事项
  2. ETL的两种架构(ETL架构和ELT架构)
  3. 转 PyCharm 进行调试 以及怎么熟悉一个已经成熟的项目的代码和断点 以及 jetBrains pycharm快捷键
  4. eclipse_project
  5. POI 按word模版生成合同并生成PDF
  6. vue router-link 添加在定义事件
  7. 读&lt;&lt;programming ruby&gt;&gt; 7.6节 flip-flop 理解
  8. WebGL 踩坑系列-1
  9. Http Client 源码分析
  10. JavaScript 对象继承 OOP (三)