![](/img/trans.png)
[英]Reading binary file into different hex “types” (8bit, 16bit, 32bit, …)
[英]Why 16bit to 8bit conversion produces striped image?
我正在幾個 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)
這是我上面代碼的結果:
我認為這是一種方法:
#!/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')
您可能需要稍微調整一下對比度,並檢查我選擇了正確的波段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.