def main():
jpg_inputs = find_inputs(JPGPATH, types=('.jpg',), prefix=PREFIX)
tif_inputs = find_inputs(TIFPATH, types=('.tif',), prefix=PREFIX)
jpg_stats = []
for f in jpg_inputs:
img = cv2.imread(f[1])
mean, std = cv2.meanStdDev(img)
jpg_stats.append(np.array([mean[::-1] / 255, std[::-1] / 255]))
jpg_vals = np.mean(jpg_stats, axis=0)
print(jpg_vals)
tif_stats = []
for f in tif_inputs:
img = cv2.imread(f[1], -1)
img = cv2.cvtColor(img, cv2.COLOR_BGRA2RGBA)
mean, std = cv2.meanStdDev(img)
tif_stats.append(np.array([mean, std]))
tif_vals = np.mean(tif_stats, axis=0)
print(tif_vals)
python类meanStdDev()的实例源码
def get_image_stats(img, left=0, top=0, width=0, height=0):
crop_img = img[top:(top + height), left:(left + width)]
(means, stds) = cv2.meanStdDev(crop_img)
stats = np.concatenate([means, stds]).flatten()
return stats
def preprocess(self, resized, landmarks):
#ret = resized.astype('f4')
#ret -= self.mean
#ret /= (1.e-6+ self.std)
#return ret, (landmarks/40.)-0.5
grayImg = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY).astype('f4')
m, s = cv2.meanStdDev(grayImg)
grayImg = (grayImg-m)/(1.e-6 + s)
return grayImg, landmarks/60.
def varianceOfLaplacian(img):
''''LAPV' algorithm (Pech2000)'''
lap = cv2.Laplacian(img, ddepth=-1)#cv2.cv.CV_64F)
stdev = cv2.meanStdDev(lap)[1]
s = stdev[0]**2
return s[0]
def normalizedGraylevelVariance(img):
''''GLVN' algorithm (Santos97)'''
mean, stdev = cv2.meanStdDev(img)
s = stdev[0]**2 / mean[0]
return s[0]
def __call__(self, img):
# This should still be a H x W x C Numpy/OpenCv compat image, not a Torch Tensor
assert isinstance(img, np.ndarray)
mean, std = cv2.meanStdDev(img)
mean, std = mean.astype(np.float32), std.astype(np.float32)
img = img.astype(np.float32)
img = (img - np.squeeze(mean)) / (np.squeeze(std) + self.std_epsilon)
return img
def fourier_transform(ch_bd):
dft = cv2.dft(np.float32(ch_bd), flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)
# get the Power Spectrum
magnitude_spectrum = 20. * np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))
psd1D = azimuthal_avg(magnitude_spectrum)
return list(cv2.meanStdDev(psd1D))
def feature_fourier(chBd, blk, scs, end_scale):
rows, cols = chBd.shape
scales_half = int(end_scale / 2)
scales_blk = end_scale - blk
out_len = 0
pix_ctr = 0
for i in range(0, rows-scales_blk, blk):
for j in range(0, cols-scales_blk, blk):
for k in scs:
out_len += 2
# set the output list
out_list = np.zeros(out_len).astype(np.float32)
for i in range(0, rows-scales_blk, blk):
for j in range(0, cols-scales_blk, blk):
for k in scs:
ch_bd = chBd[i+scales_half-(k/2):i+scales_half-(k/2)+k, j+scales_half-(k/2):j+scales_half-(k/2)+k]
# get the Fourier Transform
dft = cv2.dft(np.float32(ch_bd), flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)
# get the Power Spectrum
magnitude_spectrum = 20. * np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))
psd1D = azimuthal_avg(magnitude_spectrum)
sts = list(cv2.meanStdDev(psd1D))
# plt.subplot(121)
# plt.imshow(ch_bd, cmap='gray')
# plt.subplot(122)
# plt.imshow(magnitude_spectrum, interpolation='nearest')
# plt.show()
# print psd1D
# sys.exit()
for st in sts:
if np.isnan(st[0][0]):
out_list[pix_ctr] = 0.
else:
out_list[pix_ctr] = st[0][0]
pix_ctr += 1
out_list[np.isnan(out_list) | np.isinf(out_list)] = 0.
return out_list