69954


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

[code]

    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")
    
[/code]

[![画像１](https://i.stack.imgur.com/Gs9Lm.png)](https://i.stack.imgur.com/Gs9Lm.png)

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

[![画像２](https://i.stack.imgur.com/BQCPu.jpg)](https://i.stack.imgur.com/BQCPu.jpg)  
よろしくお願いいたします。


CC BY-SA 4.0
2020-08-28T14:58:17.523
69948
2020-08-29T00:47:56.643
41571
question
python
pythonによる画像の合成方法


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

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

>     plt.axis('off')
>     plt.savefig("test.png", bbox_inches='tight')
>  
[/code]

[Removing white space around a saved image in
matplotlib](https://stackoverflow.com/q/11837979/9014308)

>
[code]

>     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)
>  
[/code]

[matplotlib.pyplot.savefig](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.savefig.html)

> **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つのステップを実行していますが、最後の`savefig`1行だけでも効果はありそうです。質問ソースの最後の2行を以下のように変えてみてください。(`plt.imshow(image_sum)`は変更無しです)

[code]

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

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


CC BY-SA 4.0
2020-08-29T00:47:56.643
69954
2020-08-29T00:47:56.643
26370
69948
answer