簡體   English   中英

如何調整具有多個通道的 tiff 圖像的大小?

[英]How to resize a tiff image with multiple channels?

我有一個大小為 21 X 513 X 513 的 tiff 圖像,其中 (513, 513) 是包含 21 個通道的圖像的高度和寬度。 如何將此圖像的大小調整為 21 X 500 X 375?

我正在嘗試使用 PILLOW 來做到這一點。 但無法弄清楚我是否做錯了什么。

>>> from PIL import Image
>>> from tifffile import imread
>>> img = Image.open('new.tif')
>>> img

    <PIL.TiffImagePlugin.TiffImageFile image mode=F size=513x513 at 0x7FB0C8E5B940>

>>> resized_img = img.resize((500, 375), Image.ANTIALIAS)
>>> resized_img

    <PIL.Image.Image image mode=F size=500x375 at 0x7FB0C8E5B908>

>>> resized_img.save('temp.tif')

>>> img = imread('temp.tif')
>>> img.shape
  (500, 375)

頻道信息在這里丟失。

嘗試使用tifffilescikit-image

from tifffile import imread, imwrite
from skimage.transform import resize

data = imread('2009_003961_SEG.tif')
resized_data = resize(data, (375, 500, 21))
imwrite('multi-channel_resized.tif', resized_data, planarconfig='CONTIG')

文件2009_003961_SEG.tif在鏈接comment98601187_55975161是不是多通道513x513x21圖像。 相反,該文件包含 513 張大小為 513x21 的圖像。 tifffile庫將讀取文件中的一系列圖像並將其作為形狀為 513x513x21 的 numpy 數組返回。

要將 numpy 數組調整為 375x500x21,請使用skimage.transform.resize (或scipy.ndimage.zoom )。 分別調整 21 個通道的大小可能會更快。

要使用tifffile編寫包含大小為 375x500x21 的單個多通道圖像的 TIFF 文件,請指定planarconfig參數。 沒有多少庫或應用程序可以處理此類文件。

您可以使用OpenCV調整圖像大小。 我能夠使用以下代碼調整 TIFF 格式圖像的大小:

import cv2

file = "image.tiff"
img = cv2.imread(file)
print("original image size: ", img.shape)

new_img = cv2.resize(img,(img.shape[1]-100,img.shape[0]-100))  # cv2.resize(image,(width,height))
print("resized image size: ", new_img.shape)

輸出:
原始圖像大小:(512, 768, 3)
調整后的圖像大小:(412、668、3)

Opencv采用INTER_LINEAR作為默認插值方法。

您可以通過提供附加參數來更改插值

new_img = cv2.resize(img,(img.shape[1]-100,img.shape[0]-100),interpolation=cv2.INTER_AREA)

在此處閱讀有關可用插值方法的更多信息: https : //docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html?highlight=resize#resize

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM