簡體   English   中英

內聯圖像質量低

[英]inline images have low quality

我正在加載帶有scikit-image的TIF文件,並在ipython筆記本(2.2.0版)中內聯顯示。 但是,這樣可以在首次顯示時圖像非常小,當我使用圖像右下角的可拖動手柄調整圖像時,它只是重新調整圖像,同時保留原始圖像的分辨率,因此放大時圖像非常模糊。 這基本上就像ipython正在將我的圖像轉換為動態縮略圖一樣。

我也嘗試過使用matplotlib的plt.imshow() ,它具有完全相同的結果。 我用ipython notebook --pylab inline啟動筆記本。

from skimage import io
import matplotlib.pyplot as plt
image_stack = io.MultiImage("my_image.tif")
image = image_stack[0]  # it's a multi-page TIF, this gets the first image in the stack

io.imshow(image)  # or plt.imshow(image)
io.show()  # or plt.show()

要在筆記本上更改“%matplotlib inline”圖形分辨率,請執行以下操作:

import matplotlib as mpl
mpl.rcParams['figure.dpi']= dpi

如果您要下載/打印筆記本,我建議將dpi設置在150到300之間。 確保%matplotlib inlinempl.rcParams['figure.dpi']= dpi之前運行,否則magic命令將dpi重置為其默認值(為了注意到這一點,請記入@fabioedoardoluigialberto)。

下面的snipppet只更改通過savefig方法保存的數字的dpi,而不是內聯生成的數字。

import matplotlib as mpl
mpl.rc("savefig", dpi=dpi)

根據https://www.reddit.com/r/IPython/comments/1kg9e2/ipython_tip_for_getting_better_quality_inline/

你也可以在你的單元格中執行這個魔法:

%config InlineBackend.figure_format = 'svg'

打印質量看起來會更好。 您也可以將svg更改為retina ,使用更高分辨率的PNG(不太好)。 不過請注意,如果你的照片太復雜, svg圖片的尺寸會比retina圖片的尺寸大得多

內聯matplotlib數字的分辨率與您在GUI窗口或保存的圖像中看到的相比有所縮小,可能是為了節省筆記本文件中的空間。 要更改它,您可以:

import matplotlib as mpl
mpl.rc("savefig", dpi=dpi)

其中dpi是一些可以控制內聯圖的大小/分辨率的數字。 我相信內聯默認值是80,而matplotlib的默認值是100。

通過拖動手柄縮放結果繪圖的原因是圖形渲染為png,因此縮放它會縮放但不會更改內在分辨率。

假設當你去拖動和調整圖像大小時,這與iPython筆記本(使用%matplotlib內聯)發生的情況相同,修復相當簡單。

如果您只是創建一個具有不同默認大小的圖形,那么分辨率也會隨着默認大小的增加而增加( 在ipython中更改imshow的分辨率 )。 例如:

fig = plt.figure(figsize = (10,10))
ax = fig.add_subplot(111)
ax.imshow(array)

這樣的事情會增加你想要繪制的東西的分辨率。 這似乎對我的代碼有用:

from skimage import io
import matplotlib.pyplot as plt
%matplotlib inline

image_stack = io.MultiImage("my_image.tif")
image = image_stack[0] 

fig = plt.figure(figsize= (20,20)) #create an empty figure to plot into with 20x20 size
io.imshow(image)
io.show()

暫無
暫無

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

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