TransWikia.com

pythonによる画像の合成方法

スタック・オーバーフロー Asked by tani on December 5, 2020

以下のコードによりDICOM形式の複数の画像を合成したのですが画像1のようにグラフの軸が入ってしまいます。

import pydicom
import matplotlib.pyplot as plt

image1 = pydicom.dcmread('g1.dcm')
image3 = pydicom.dcmread('g2.dcm')
image4 = pydicom.dcmread('g3.dcm')
image2 = pydicom.dcmread('g4.dcm')
image_sum = image1.pixel_array + image2.pixel_array + image3.pixel_array + image4.pixel_array
plt.imshow(image_sum)
plt.savefig("combined.tif")

 画像1

画像2のように合成した画像のみのものをTiff形式で保存したいのですが、修正、もしくは別の方法はないでしょうか?

画像2
よろしくお願いいたします。

One Answer

コメントに紹介した記事と、+もう一つの記事&matplotlibのドキュメントの応用で、以下のようにすれば出来ると思われます。(回答の該当部分を抜粋)
Matplotlib plots: removing axis, legends and white spaces

I think that the command axis('off') takes care of one of the problems more succinctly than changing each axis and the border separately.

plt.axis('off')
plt.savefig("test.png", bbox_inches='tight')

Removing white space around a saved image in matplotlib

plt.plt.margins(0,0)
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
savefig("filename.pdf", bbox_inches = 'tight',
    pad_inches = 0)

matplotlib.pyplot.savefig

bbox_inches : str or Bbox, default: rcParams["savefig.bbox"] (default: None)
Bounding box in inches: only the given portion of the figure is saved. If 'tight', try to figure out the tight bbox of the figure.

pad_inches : float, default: rcParams["savefig.pad_inches"] (default: 0.1)
Amount of padding around the figure when bbox_inches is 'tight'.


上記2つ目の記事は4つのステップを実行していますが、最後のsavefig1行だけでも効果はありそうです。質問ソースの最後の2行を以下のように変えてみてください。(plt.imshow(image_sum)は変更無しです)

plt.imshow(image_sum)
plt.axis('off')
plt.savefig("combined.tif", bbox_inches='tight', pad_inches=0.0)

希望するものでは無かった場合には色々追加して試してみてください。

Answered by kunif on December 5, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP