Ejemplo n.º 1
0
def augment(img):
    np.seterr(over='ignore')

    blockSize = 9
    height = len(img)
    width = len(img[0])
    gimfiltR = 50  # Radius size of guided filter
    eps = 10**-3  # Epsilon value of guided filter
    Nrer = [0.95, 0.93,
            0.85]  # Normalized residual energy ratio of G-B-R channels

    AtomsphericLight = np.zeros(3)
    AtomsphericLight[0] = (
        1.13 * np.mean(img[:, :, 0])) + 1.11 * np.std(img[:, :, 0]) - 25.6
    AtomsphericLight[1] = (
        1.13 * np.mean(img[:, :, 1])) + 1.11 * np.std(img[:, :, 1]) - 25.6
    AtomsphericLight[2] = 140 / (
        1 + 14.4 * np.exp(-0.034 * np.median(img[:, :, 2])))
    AtomsphericLight = np.clip(AtomsphericLight, 5, 250)
    transmissionR = getTransmission(img, AtomsphericLight, blockSize)
    TM_R_modified = Depth_TM(img, AtomsphericLight)
    TM_R_modified_Art = Sat_max(img)
    transmissionR_new = np.copy(transmissionR)
    for i in range(0, img.shape[0]):
        for j in range(0, img.shape[1]):
            if (transmissionR_new[i, j] > TM_R_modified[i, j]):
                transmissionR_new[i, j] = TM_R_modified[i, j]
            if (transmissionR_new[i, j] < TM_R_modified_Art[i, j]):
                transmissionR_new[i, j] = TM_R_modified_Art[i, j]

    transmissionR_Stretched = stretching(transmissionR_new, height, width)
    transmissionB, transmissionG, depth_map = getGBTransmissionESt(
        transmissionR_Stretched, AtomsphericLight)
    transmission = Refinedtransmission(transmissionB, transmissionG,
                                       transmissionR_Stretched, img)
    sceneRadiance = sceneRadianceRGB(img, transmission, AtomsphericLight)
    sceneRadiance = OptimalParameter(sceneRadiance)

    return sceneRadiance
Ejemplo n.º 2
0
        transmissionR_Stretched = stretching(transmissionR_new, height, width)
        transmissionB, transmissionG, depth_map = getGBTransmissionESt(
            transmissionR_Stretched, AtomsphericLight)
        transmission = Refinedtransmission(transmissionB, transmissionG,
                                           transmissionR_Stretched, img)
        transmissionR_Stretched = transmission[:, :, 2]

        # cv2.imwrite('Results_TMs/' + Num + 'TM_R.jpg', np.uint8(transmissionR  * 255))
        # cv2.imwrite('Results_temps/' + prefix + 'TM_R_Refi_fusion_Sat_lamba.jpg', np.uint8(transmissionR_Stretched  * 255))
        # cv2.imwrite('OutputImages/' + prefix + '_SMBLOTMOP_TM.jpg', np.uint8(transmissionR_Stretched  * 255))
        cv2.imwrite('Results_Enhance_fusion/' + prefix + '_SMBLOTMOP_TM_R.jpg',
                    np.uint8(transmissionR_Stretched * 255))
        # cv2.imwrite('Results_Enhance_fusion/' + prefix + '_SMBLOTMOP_TM_G.jpg', np.uint8(transmission[:, :, 1]  * 255))
        # cv2.imwrite('Results_Enhance_fusion/' + prefix + '_SMBLOTMOP_TM_B.jpg', np.uint8(transmission[:, :, 0]  * 255))

        sceneRadiance = sceneRadianceRGB(img, transmission, AtomsphericLight)
        # cv2.imwrite('OutputImages/' + prefix + '_SMBLOTM.jpg', sceneRadiance)
        cv2.imwrite('Results_Enhance_fusion/' + prefix + '_SMBLOTM.jpg',
                    sceneRadiance)
        sceneRadiance = OptimalParameter(sceneRadiance)

        # cv2.imwrite('Results_temps/' + prefix + '_SMBLOTMOptimalParameters.jpg', sceneRadiance)
        # cv2.imwrite('OutputImages/' + prefix + '_SMBLOTMOP.jpg', sceneRadiance)
        cv2.imwrite('Results_Enhance_fusion/' + prefix + '_SMBLOTMOP.jpg',
                    sceneRadiance)

Endtime = datetime.datetime.now()
Time = Endtime - starttime
print('Time', Time)
Ejemplo n.º 3
0
np.seterr(over='ignore')
if __name__ == '__main__':
    pass

# folder = "C:/Users/Administrator/Desktop/UnderwaterImageEnhancement/NonPhysical/ICM"
folder = r"\\cylog.local\rede\Usuarios\Documentos\Luiz\Documents\PROJETO_DIP"

path = folder + "/InputImages"
files = os.listdir(path)
files =  natsort.natsorted(files)

for i in range(len(files)):
    file = files[i]
    filepath = path + "/" + file
    prefix = file.split('.')[0]
    if os.path.isfile(filepath):
        print('********    file   ********',file)
        # img = cv2.imread('InputImages/' + file)
        img = cv2.imread(folder + '/InputImages/' + file)
        img = stretching(img)
        sceneRadiance = sceneRadianceRGB(img)
        # cv2.imwrite(folder + '/OutputImages/' + Number + 'Stretched.jpg', sceneRadiance)
        sceneRadiance = HSVStretching(sceneRadiance)
        sceneRadiance = sceneRadianceRGB(sceneRadiance)
        cv2.imwrite('ICM.jpg', sceneRadiance)
        
        plt.subplot(111),plt.imshow(sceneRadiance)
        plt.show()
        
for i in files:    
    img = cv2.cv2.imread("D:/Single-Underwater-Image-Enhancement-and-Color-Restoration-master/underwater-test-dataset/upload/DATABASE 1./"+str(c)+".jpg")
    height = len(img)
    width = len(img[0])
    sceneRadiance = RGB_equalisation(img, height, width)
    # sceneRadiance = stretching(img)
    sceneRadiance = stretching(sceneRadiance)
    sceneRadiance_Lower, sceneRadiance_Upper = rayleighStretching(sceneRadiance, height, width)

    sceneRadiance = (np.float64(sceneRadiance_Lower) + np.float64(sceneRadiance_Upper)) / 2

    # cv2.imwrite('OutputImages/' + prefix + 'Lower0.jpg', sceneRadiance_Lower)
    # cv2.imwrite('OutputImages/' + prefix + 'Upper0.jpg', sceneRadiance_Upper)

    sceneRadiance = HSVStretching(sceneRadiance)
    sceneRadiance = sceneRadianceRGB(sceneRadiance)
    cv2.cv2.imwrite( str(c)+'_out.jpg', sceneRadiance)
    entropy = skimage.measure.shannon_entropy(sceneRadiance)
    print(str(entropy) + '\t')
    mse = skimage.measure.compare_mse(img,sceneRadiance)
    
    psnr = skimage.measure.compare_psnr(img, sceneRadiance)
    print(str(mse) + '\t' + str(psnr)+'\n')
    c=c+1
    avg_entropy+=entropy
    avg_psnr+=psnr
    avg_mse+=mse 


endtime = datetime.datetime.now()
time = endtime-starttime