gpt4 book ai didi

python - 将一组图像拼接在一起的最pythonic方式

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:46 33 4
gpt4 key购买 nike

我有一组来自自动显微镜程序的图像,该程序从 96 孔板获取图像(下图)。每张图片命名为:

<Well name>_s<site number>.tif

96孔板的每个孔进一步分割为位点,位点按X×Y矩阵排列,数字逐行排列(下图)。

96 well plate layout

Site layout

例如,96 孔板左上孔第 (10,9) 个位点的图像将命名为 A01_s90.tif .

将图像拼接在一起的最 Pythonic 方式是什么?我目前正在使用 OpenCV 加载图像并调用 numpy.concatenate在四个for循环,但这看起来很笨重。

最佳答案

类似于下面的代码?我假设问题出在缝合上,而不是文件名和井/站点索引之间的转换。

import numpy as np
import matplotlib.pyplot as plt

img_ysize, img_xsize = 20, 20 # size of single image
my, mx = 10, 10 # x/y grid of sites per well
ny, nx = 8, 12 # x/y grid of wells per plate
wgap = 20 # pixels gap between wells
stitched_x, stitched_y = (wgap+mx*img_xsize)*nx, (wgap+my*img_ysize)*ny

img_stitched = np.zeros((stitched_y, stitched_x), dtype=np.uint8)

def add_img(mxi, myi, nxi, nyi, img):
assert img.shape == (img_ysize, img_xsize)
xi = nxi*(mx*img_xsize + wgap) + mxi*img_xsize
yi = nyi*(my*img_ysize + wgap) + myi*img_ysize
img_stitched[yi:yi+img_ysize,xi:xi+img_xsize] = img

for nxi in range(nx):
for nyi in range(ny):
for mxi in range(mx):
for myi in range(my):
# ... get image data
img = np.random.randint(0,255) * np.ones((img_ysize, img_xsize), dtype=np.uint8)
add_img(mxi, myi, nxi, nyi, img)

plt.imshow(img_stitched)
plt.colorbar()
plt.show()

关于python - 将一组图像拼接在一起的最pythonic方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062671/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com