【去雾】|根据深度图生成合成雾天图像 代码 code

# -*- coding: utf-8 -*-
import scipy
import matplotlib.pyplot as plt
from random import uniform
import h5py
import os
import numpy as np
for k in range(33,34):
    print(k)

    ##### 读取深度###########
#    features_path='E:\\Data_Set\\hangpai\\results\\'+str(k+1)+'\\predict_depth.mat'
    features_path='H:\\code\\malab_code\\dehaze\\深度估计\\adjust_depth.mat'
    
    #features_path='H:\\code\\python_code\\DCPDN\\dcpdn\\demo_image\\results\\newyork\\predict_depth.mat'
    
    
    features_struct = scipy.io.loadmat(features_path)
    depth = features_struct['data_obj']
    
    gt_depth =2* depth / 255
    plt.imshow(gt_depth,cmap='gray')
    #print(features.shape)
    
    #########     读取原图    #############
    image_path='E:\\Data_Set\\hangpai\\'+str(k+1)+'.JPG'
    #image_path='E:\\Data_Set\\RESIDE\\myOTS_BETA\\clear\\0077.jpg'
    #image_path='H:\\code\\python_code\\DCPDN\\dcpdn\\demo_image\\newyork.png'
    image=scipy.misc.imread(image_path).astype(float)
    gt_image = image / 255
    plt.imshow(gt_image)
    total_num = 1
    ##########  生成hazy image  ########
    for j in range(20):#随机选取参数产生8组
    
            beta = uniform(5, 6)
        
    
    #        beta =1.8
    
            tx1 = np.exp(-beta * gt_depth)
            a = 2 - 0.5 * uniform(0, 1)
    
    #        a=0.9
            m = gt_image.shape[0]
            n = gt_image.shape[1]
    
            rep_atmosphere = np.tile(np.tile(a, [1, 1, 3]), [m, n, 1])
            tx1 = np.reshape(tx1, [m, n, 1])
    
            max_transmission = np.tile(tx1, [1, 1, 3])
    
            haze_image = gt_image * max_transmission + rep_atmosphere * (1 - max_transmission)
            img_directory='./my_data/OUT/'+str(k+1)+'/3/'
    
            if not os.path.exists(img_directory):
                os.makedirs(img_directory)
            
            scipy.misc.imsave(img_directory+'a'+str(a)+'beta'+str(beta)+str(total_num)+'.jpg', haze_image)
            scipy.misc.imsave(img_directory+'gt'+str(total_num)+'.jpg', gt_image)
            
            
            
            h5f=h5py.File(img_directory+str(total_num)+'.h5','w')
            h5f.create_dataset('haze',data=haze_image)
            h5f.create_dataset('trans',data=max_transmission)
            h5f.create_dataset('ato',data=rep_atmosphere)
            h5f.create_dataset('gt',data=gt_image)
            total_num = total_num+1










  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
当涉及到合成雾天图像代码时,Matlab是一个非常强大的工具。以下是一个简单的合成雾天图像的Matlab代码示例: ```matlab % 读取原始图像 original_image = imread('original_image.jpg'); % 生成效果 foggy_image = add_fog(original_image, 0.5, 0.1); % 显示原始图像雾天图像 subplot(1,2,1), imshow(original_image), title('Original Image'); subplot(1,2,2), imshow(foggy_image), title('Foggy Image'); % 合成雾天图像函数 function foggy_image = add_fog(original_image, fog_density, fog_intensity) % 获取图像尺寸 [rows, cols, ~] = size(original_image); % 生成雾天图像 foggy_image = zeros(size(original_image)); % 随机生成雾天颜色 fog_color = randi([200, 255], 1, 3); % 合成雾天图像 for i = 1:rows for j = 1:cols % 计算每个像素的透明度 alpha = fog_density * (rows - i) / rows + fog_intensity; % 合成雾天图像 foggy_image(i, j, :) = (1 - alpha) * original_image(i, j, :) + alpha * fog_color; end end % 转换图像类型为uint8 foggy_image = uint8(foggy_image); end ``` 这段代码中,`add_fog`函数用于合成雾天图像。它接受原始图像的密度和的强度作为输入参数,并返回合成雾天图像。在函数内部,通过遍历每个像素点,根据的密度和强度计算每个像素的透明度,并将原始图像的像素值与雾天颜色进行混合,得到最终的雾天图像。 请注意,这只是一个简单的示例代码,实际应用中可能需要更复杂的算法和参数调整来获得更好的效果。另外,你需要将`original_image.jpg`替换为你自己的原始图像文件名。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值