-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspectral_sampling_1.py
More file actions
61 lines (53 loc) · 2.06 KB
/
spectral_sampling_1.py
File metadata and controls
61 lines (53 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# -*- coding: utf-8 -*-
import numpy as np
import cv2
import torch
import utils_image as util
import random
import scipy
import scipy.stats as ss
from scipy.interpolate import interp2d
from scipy.linalg import orth
import NTIRE2022Util as spec
import h5py
from scipy.interpolate import interp1d
import os
from scipy.io import loadmat, savemat
from scipy import ndimage
"""
# --------------------------------------------
# Spectral Sampling
# --------------------------------------------
#
# Kai Feng (fengkainpu@gmail.com)
# --------------------------------------------
"""
def create_multispectral(hsi, hsi_bands):
filterQEs, QEs_bands_list = spec.load_mine_filter('csf_IMEC25_600-875.csv', linesnum=25)
CutofffilterQEs, CutoffQEs_bands_list = spec.load_mine_filter('cutoff_filter_response.csv', linesnum=2)
illum, illum_bands_list = spec.load_mine_filter('illum-solarTT59.csv', linesnum=1)
illum = spec.interpolate(illum, illum_bands_list, QEs_bands_list)
illum = illum / np.max(illum)
CutoffQE = CutofffilterQEs[:, 0] * CutofffilterQEs[:, 1] * illum[:, 0]
qes = np.expand_dims(CutoffQE, axis=1) * filterQEs
if np.all(QEs_bands_list == CutoffQEs_bands_list):
qe_bands = QEs_bands_list
else:
print("wrong")
msi = spec.projectHS(hsi, hsi_bands, qes, qe_bands, clipNegative=True)
msi /= msi.max()
return msi
if __name__ == '__main__':
img = h5py.File('Cloth3.mat')
img = np.transpose(img['img'])
img = img[:, :, 17:48]
hsi_bands_list = np.arange(590, 890.1, 10)
interpfun = interp1d(hsi_bands_list, img, axis=2, kind='cubic')
new_hsi_bands_list = np.arange(590, 890.1, 1)
img = interpfun(new_hsi_bands_list)
msicube = create_multispectral(img, new_hsi_bands_list)
msicube_uint = util.single2uint(msicube)
save_img_path = os.path.join('FalseHSIcolor.png')
util.imsave(msicube_uint[:, :, [22, 12, 4]], save_img_path)
save_img_path = os.path.join('FalseHSI.tif')
util.save_msicube(msicube_uint.transpose(2, 1, 0), save_img_path)