![見出し画像](https://assets.st-note.com/production/uploads/images/71466217/rectangle_large_type_2_dac3ffa17e099f49ad7fa22417d0187c.png?width=1200)
複数の染色画像を一つの画像にしたい日もある。
病理学や組織学系の研究室にはバーチャルスライド撮影装置という高級品がある(ことがある)。
もしくは大学全体で所有しているところもあるだろう。
それはスライドグラスに貼り付けた切片をGoogleマップの航空画像の様に観察ができる優れものだ。
一度画像を取り込んでしまえば、染色が色褪せることは気にしなくていい。
マウスのドラッグで移動をし、ホイールで拡大縮小自由自在だ。
まぁ拡大しすぎると画素が見えてデジタル写真だなぁ~という気持ちになるのだが。
そういった便利な高級撮影装置がないとき、複数の画像を1枚にしたくなるときがある(あるのである)。
そんなとき、便利なのがOpenCVが提供するStichingモジュールだ。
とりあえず、自分の実験試料を出すわけに行かないので、eMouseAtlasの画像を拝借した。
![](https://assets.st-note.com/img/1643975421514-SScBk1mg1Z.jpg?width=1200)
弱拡大像はこんな感じで、E11.5のマウス胎仔矢状断を使う。
そこで一部重なりがある複数の画像を用意する。
![](https://assets.st-note.com/img/1643975593645-2Kp2WPzwCH.png?width=1200)
これをStichingする。
# -*- coding: utf-8 -*-
"""
Created on Fri Feb 4 20:17:57 2022
@author: t-pathos
"""
#!/usr/bin/python
# -*- coding: utf-8 -*-
import cv2 as cv
images = []
images.append(cv.imread("a.jpg"))
images.append(cv.imread("b.jpg"))
images.append(cv.imread("c.jpg"))
stitcher = cv.Stitcher_create()
stitched = stitcher.stitch(images)[1]
cv.imshow('stitched', stitched)
cv.waitKey(0)
cv.imwrite("test.jpg", stitched)
出来上がった画像がこちら。
![](https://assets.st-note.com/img/1643975743170-bmT6U2GZI7.jpg?width=1200)
3枚の画像が1枚の画像になった。
これかなりお便利~。
コード短くて素人の私にもサイコ~。
今回はjpg画像を使ったが、tiff画像でも問題ない。
ただこれがアカデミックな画像として使えるかは注意が必要だ。
いくつかのデジタル撮影装置はこの様に画像をstichingして1枚の画像にしているので問題ないだろうと言いたい。
しかし画像の改ざんだなんだ言われてしまうと面倒なので、これを発表に使うかはよく周りの人に相談したほうがいいかもしれない。
補足
画像読み込みの部分を関数にしてスッキリ書いたver.
# -*- coding: utf-8 -*-
"""
Created on Fri Feb 4 20:17:57 2022
@author: t-pathos
"""
#!/usr/bin/python
# -*- coding: utf-8 -*-
import cv2 as cv
def import_pic(*arg):
bl = []
for i in arg:
bl.append(cv.imread(i))
else:
return bl
##↓ここを変える↓##
images = import_pic("a.jpg",
"b.jpg",
"c.jpg")
stitcher = cv.Stitcher_create()
stitched = stitcher.stitch(images)[1]
cv.imshow('stitched', stitched)
cv.waitKey(0)
cv.imwrite("test.jpg", stitched)
↓参考にさせていただいたページ↓
複数の画像からパノラマを作成 (OpenCV、Python)
https://www.qoosky.io/techs/dea950ec9a