我试图通过使用python反转暗通道的过程来生成一些模糊的图像,我想我正确地计算了透射和全局大气光,但输出是一个奇怪的图像。
基于大气散射模型,如果忽略索引像素x,则I = Jt + A. I:朦胧图像,J:非雾度图像,t:透射,A:全球大气光
我尝试切换到这样的等式:
1)I = Jt + A来自许多论文
2)I =(J-A)t + A来自github代码
和主题J的表格,但输出仍然不正确。
输出图片:
没有雾霾:
暗道:
传输:
奇怪的蓝雾图像(当I = Jt + A时):
printing bgr matrix of first 5*5 area:
format:[[[b g r] ... [b g r]]...[[b g r] ... [b g r]]]
[[[231.59398459 177.90628817 135.79826498]
[231.59398459 177.90628817 135.79826498]
[231.59398459 177.90628817 135.79826498]
[231.59398459 177.90628817 135.79826498]
[231.59398459 177.90628817 135.79826498]]
[[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]]
[[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]]
[[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]]
[[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]
[231.64794239 177.96024596 135.85222257]]]
代码的主要功能:
#load pic
img="./test.jpg"
src=cv2.imread(img);
J=src.astype("float64")/255;
dark=DarkChannel(J,15);
A=AtmLight(J,dark);
te=TransmissionEstimate(J,A,15);
t=TransmissionRefine(src,te);
tx=0.1
I=np.empty(J.shape,J.dtype)
t=cv2.max(t,tx)
for i in range(0,3):
I[:,:,i]=(J[:,:,i]*t)+A[0,i]
#output
cv2.imshow('I',I);
对于基本功能DarkChannel,AtmLight,TransmissionEstimate,TransmissionRefine: https://pastebin.com/3uCqamfA
基本功能不是我的实现,但它运行正确,类似于论文的示例代码。
最新输出: