2024年图像数据增强算法汇总(Python)_图像融合数据增强(1),2024年最新高级职位面试技巧

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


![在这里插入图片描述](https://img-blog.csdnimg.cn/163f192be28742f9a7685dc9c16aa57f.png)


真实场景中我们不可能仅从一个角度拍摄目标,这样收集到的数据集会造成目标识别模型过拟合,也就是只能从拍摄的角度去识别该物体,目标换个形态或者是拍摄角度更换,模型就识别不出来了。我们可以通过图片处理技术进行一定的泛化操作:


#### 1.随机旋转和翻转


`cv2.getRotationMatrix2D` 是 OpenCV 中的一个函数,用于生成一个二维旋转矩阵,可以将图像围绕指定点进行旋转。


它接受三个参数:


1. `center`:旋转的中心点,一个元组 `(x, y)` 表示图像的中心坐标。
2. `angle`:旋转的角度,以度为单位,正值表示逆时针旋转。
3. `scale`:缩放因子,可选参数,默认为 1。


该函数会返回一个形如:



| cos(angle) -sin(angle) center_x * (1 - cos(angle)) - center_y * sin(angle) |
| sin(angle) cos(angle) center_x * sin(angle) + center_y * (1 - cos(angle)) |


的旋转矩阵。通常情况下,我们会将旋转矩阵传递给 `cv2.warpAffine` 函数,来实际地应用旋转到图像上。这样可以得到一个围绕指定点旋转了一定角度的图像。



随机旋转

angle = np.random.randint(0, 360)
rows, cols = image.shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), angle, 1)
rotated_image = cv2.warpAffine(image, M, (cols, rows))


![在这里插入图片描述](https://img-blog.csdnimg.cn/adeb22e15bc54910bef1f3159f3a5322.png)


`cv2.flip()` 函数用于翻转图片,它接受两个参数,一个是要翻转的图片,另一个是翻转的方向:



flip_direction


参数可以取以下三个值:


* `0`:垂直翻转(沿x轴翻转)
* `1`:水平翻转(沿y轴翻转)
* `-1`:同时在水平和垂直方向翻转



随机翻转

flip_direction = np.random.randint(-1, 2) # 随机选择水平、垂直或不翻转
flipped_image = cv2.flip(image, flip_direction)


![在这里插入图片描述](https://img-blog.csdnimg.cn/ef22374f0b50464ea901e14aa6fec79c.png)


#### 2.随机裁剪


随机裁剪可以根据设定randint来随机生成裁剪的起始坐标,`image.shape[1]` 表示图像的宽度,`image.shape[0]` 表示图像的高度。


通过以下代码:



随机裁剪

crop_x = np.random.randint(0, image.shape[1] - 100)
crop_y = np.random.randint(0, image.shape[0] - 100)
cropped_image = image[crop_y:crop_y+100, crop_x:crop_x+100]


`np.random.randint(0, image.shape[1] - 100)` 会在图像的宽度范围内随机生成一个起始点横坐标,保证裁剪后剩余的宽度至少为 100 像素。同理,`np.random.randint(0, image.shape[0] - 100)` 会在图像的高度范围内随机生成一个起始点纵坐标,保证裁剪后剩余的高度至少为 100 像素。


`image[crop_y:crop_y+100, crop_x:crop_x+100]` 表示在图像上从 `crop_y` 到 `crop_y+100` 行,从 `crop_x` 到 `crop_x+100` 列的区域,即裁剪了一个 100x100 大小的区域。


![在这里插入图片描述](https://img-blog.csdnimg.cn/8abb893720704592a7f23bdd0a844219.png)


#### 3.随机缩放


`np.random.uniform` 函数,可以在指定范围内随机生成一个浮点数作为缩放因子 `scale_factor`。


`cv2.resize` 函数可以用来对图像进行缩放,其参数:


* `image` 是要被缩放的原始图像。
* `None` 表示输出图像的大小由后面的缩放因子决定。
* `fx=scale_factor, fy=scale_factor` 表示在水平和垂直方向上的缩放比例,即将图像



随机缩放

scale_factor = np.random.uniform(0.7, 1.3)
scaled_image = cv2.resize(image, None, fx=scale_factor, fy=scale_factor)


`np.random.uniform(0.7, 1.3)` 会在 0.7 到 1.3 之间随机生成一个浮点数,这个数就是缩放因子。


![在这里插入图片描述](https://img-blog.csdnimg.cn/b6423220c0614da5bafcbedc6b40e403.png)


和原图像相比图像的刻度会有明显变化:


![在这里插入图片描述](https://img-blog.csdnimg.cn/149cf28325624352bb84d3f9e04ff9a0.png)


#### 4.添加噪声


##### 4.1高斯噪声


一般来说噪声是模拟实际数据采集情况,比如随机环境因素影响,大雾、水雾、大雨情况导致的摄像头传感器的不完美性、光照变化等。高斯噪声是一种常见的图像噪声类型,在图像数据增强中,通过添加高斯噪声,可以使模型更具鲁棒性,提高其对噪声环境的适应能力。



生成高斯噪声

mean = 0
var = 0.5
sigma = var ** 0.5
gaussian = np.random.normal(mean, sigma, image.shape).astype(‘uint8’)
noisy_image = cv2.add(image, gaussian)

显示带噪声的图像

cv2.imshow(‘Noisy Image’, noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()


![在这里插入图片描述](https://img-blog.csdnimg.cn/a72a2a287ae6479fa620c9b0ef0fb2f4.png)


##### 4.2**椒盐噪声**


椒盐噪声是一种常见的图像噪声类型,它主要体现为图像中出现了随机的黑白像素点,这些像素点模拟了背景中的颗粒物或损坏的像素。



def salt_pepper_noise(image, salt_prob, pepper_prob):
noisy_image = np.copy(image)
total_pixels = image.shape[0] * image.shape[1] #计算图像的总像素数

num_salt = int(total_pixels \* salt_prob) #通过将总像素数与指定的椒盐噪声比例相乘,得到要添加的椒盐噪声的数量。
salt_coords = [np.random.randint(0, i-1, num_salt) for i in image.shape]
noisy_image[salt_coords[0], salt_coords[1]] = 255

num_pepper = int(total_pixels \* pepper_prob)
pepper_coords = [np.random.randint(0, i-1, num_pepper) for i in image.shape]
noisy_image[pepper_coords[0], pepper_coords[1]] = 0

return noisy_image

![在这里插入图片描述](https://img-blog.csdnimg.cn/f5978a6c590b4da58b6ef678d677f251.png)


#### 5.颜色扭曲


对图像进行随机的色彩变换,需要将图像从BGR颜色空间转换为HSV颜色空间,再对Hue通道进行扭曲,然后从HSV颜色空间转换回BGR颜色空间就可以完成:



读取图片

image = cv2.imread(‘clickhouse-logo.jpg’)

转换为HSV颜色空间

hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

扭曲Hue通道

hsv_image[:,:,0] = (hsv_image[:,:,0] + 30) % 180 # 在Hue通道上增加30

转回BGR颜色空间

result_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2BGR)

显示原始图像和扭曲后的图像

cv2.imshow(‘Original Image’, image)
cv2.imshow(‘Distorted Image’, result_image)
cv2.waitKey(0)
cv2.destroyAllWindows()


这里我们用一张彩色图片更好展示:


![在这里插入图片描述](https://img-blog.csdnimg.cn/83abc48ac7704a0f940e132e8cb93c50.png)


下面那张是原图片,上面那张是颜色扭曲后的图片,通过对Hue通道进行扭曲,将Hue通道的值增加30,同时使用模运算确保值在0到180之间,再将图像从HSV颜色空间转换回BGR颜色空间。


#### 6.随机遮挡


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210511152217670.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poaWd1aWd1,size_16,color_FFFFFF,t_70)

**感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:**



① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值