首页 > 解决方案 > 为什么 16bit 到 8bit 的转换会产生条纹图像?

问题描述

我正在几个 VHSR 卫星图像上测试分割算法,这些图像最初是 16 位格式的,但是当我将它们转换为 8 位图像时,生成的图像显示出条纹外观。我一直在尝试不同的 python 库(skimage、cv2、scipy)得到类似的结果。

1)原始16位图像是4波段图像(NIR,B,G,R),因此您需要选择正确的波段来创建真彩色图像,RGB图像(4,3,2波段)。提前致谢。可以从这个链接下载: 16bit image

2)我使用此代码从现在适合 8 位范围内的 16 位整数转换每个像素值:

  from scipy.misc import bytescale
  SS = io.imread('Imag16bit.tif')
  SS = bytescale(SS)
  SS = np.asarray(SS) 
  plt.imshow(SS)

这是我上面代码的结果:

标签: pythonimageimage-processing

解决方案


bytescale为我工作。我认为这asarray一步搞砸了。

import cv2
from skimage import io
from scipy.misc import bytescale

image = io.imread('SkySat_16bit.tif')
cv2.imshow('Original', image)
print(image.dtype)

image = bytescale(image)
print(image.dtype)

cv2.imshow('Converted', image)
cv2.waitKey(0)

在此处输入图像描述


推荐阅读