我正在使用强透镜事件的CASTLES数据集,并试图将星系的图像分类为透镜事件或不。
当我检查FITS图像本身中的任何NaN值时,我找不到任何值:
img_g = fits.open(os.path.join(path, os.listdir(path)[0]))
img = img_g[0].data
print(np.any(np.isnan(img))) --> (False)
但是,当我尝试将图像格式化为适当数量的颜色通道时,我会得到以下结果:
pic = cv2.cvtColor(img, cv2.COLOR_GRAY2RGB)
for i in pic[0]:
if np.any(np.isnan(i)):
print(i) --> [nan, nan, nan]
此外,当我尝试调整图像大小时,NaN值会弹出:
pic = cv2.resize(img,(256,256))
print(np.any(np.isnan(pic))) --> (True)
有谁能告诉我我做错了什么,或者有没有办法在保留图像的同时删除这些NaN值?如果有必要,我会提供更多信息。
1条答案
按热度按时间b1zrtrql1#
没有颜色通道。那些是灰度图像。我下载了一套来检查。所有137张图像都是灰度的。如果你要给它们上色,那就由你来做转换。
后续
你不能只是把这些图像转换成颜色。这没有意义。我看了一个示例文件,值的范围从-0.0289到+0.224。如果我给你一个给予0.18的值,那是什么颜色?如果我给你给予-0.02,那是什么颜色?
以下是使用2D绘图可视化这些文件的方法:
如果我
cd Castles/B2319/FIT/NIC2H
并运行该脚本,我会得到:x1c 0d1x但这是matplotlib应用颜色Map的工件。如果这是你想要的,你必须做颜色Map。OpenCV不能做。