为什么16bit到8bit转换会产生条纹图像?

时间:2018-09-22 17:15:33

标签: python image image-processing

我正在测试几个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)

这是上面代码的结果:

任何建议都会受到赞赏,Jaime

2 个答案:

答案 0 :(得分:1)

public class User { public int id { get; set; } public string name { get; set; } // id of restaurant... // public int favoriteRestaurantId { get; set; } // ...or entire instance of Restaurant type // public Restaurant favoriteRestaurant { get; set; } } public class Restaurant { public int id { get; set; } public string name { get; set; } } 为我工作。我认为bytescale步骤弄得有些混乱。

asarray

enter image description here

答案 1 :(得分:0)

我认为这是一种方法:

#!/usr/local/bin/python3

from PIL import Image
from tifffile import imsave, imread

# Load image
im = imread('SkySat_16bit.tif')

# Extract Red, Green and Blue bands into separate 8-bit arrays
R = (im[:,:,3]/256).astype(np.uint8)
G = (im[:,:,2]/256).astype(np.uint8)
B = (im[:,:,1]/256).astype(np.uint8)

# Combine bands into RGB array
RGB = np.dstack((R,G,B))

# Save to disk
Image.fromarray(RGB).save('result.png')

enter image description here

您可能需要稍微调整对比度,然后检查我是否选择了正确的波段。