一种对图像加雾的算法(python实现)

随机性

本算法以随机的方式对每张图像选取三种加雾算法中的一种,使得训练后的神经网络不容易出现过拟合现象

思路

在进行去雾算法实验的过程中我发现如果使用单一的加雾算法,得到的训练集进行训练后效果并不理想。之后尝试了这种方法,在某些情况下效果还不错。

import cv2, math
import numpy as np

def AddHaze1(img):

	img_f = img
	(row, col, chs) = img.shape

	A = 0.5  # 亮度
	beta = 0.08  # 雾的浓度
	size = math.sqrt(max(row, col))  # 雾化尺寸
	center = (row // 2, col // 2)  # 雾化中心
	for j in range(row):
		for l in range(col):
			d = -0.04 * math.sqrt((j - center[0]) ** 2 + (l - center[1]) ** 2) + size
			td = math.exp(-beta * d)
			img_f[j][l][:] = img_f[j][l][:] * td + A * (1 - td)
	return img_f

def AddHaze2(img):
	A = np.random.uniform(0.6,0.95)
	t = np.random.uniform(0.3,0.95)
	img_h = img*t + A*(1-t)
	
	return img_h

def AddHaze(img):
	l = np.random.uniform(0, 1)
	if l > 0.7:
		img_T = AddHaze1(img)
	else:
		img_T = AddHaze2(img)
	return img_T

你可能感兴趣的:(图像去雾,神经网络,python,计算机视觉)