2010-06-09 72 views
4

如果我用這個公式在像素距離:轉換像素爲cm

sqrt((x1-x2).^2+.(y1-y2)^2)) 

我怎樣才能把它轉換到CM?

回答

3

如果您不知道渲染像素的設備的DPI(或通常分辨率),則無法將像素轉換爲cm。

假設你有你的設備的DPI,那麼你可以簡單地做像素/ DPI * 2.54。

<思維>

 px  cm   in  cm   cm 
px : ---- * ---- = px * ---- * ---- = in * ---- = cm 
     in  in   px  in   in 

... OK,單位是吧:) < /思>

0

像素和CM是不同的措施。像素是依賴於環境的。電腦屏幕有不同的分辨率和尺寸。例如在我的屏幕上,100px大約是2.7cm情況如何?

http://en.wikipedia.org/wiki/Pixel_density

7

稱之爲 'ScreenPixelsPerInch' 屬性:

dpix=sqrt((x1-x2)^2+(y1-y2)^2);   %# calculate distance in pixels 
pixperinch=get(0,'ScreenPixelsPerInch'); %# find resolution of your display 
dinch=dpix/pixperinch;     %# convert to inches from pixels 
dcm=dinch*2.54;       %# convert to cm from inches 

或爲一襯墊的方法:

dcm=sqrt((x1-x2)^2+(y1-y2)^2))/get(0,'ScreenPixelsPerInch')*2.54; 

編輯:您可能要檢查您的系統獲得正確的屏幕尺寸和dpi。如果您知道顯示器的尺寸和長寬比以及分辨率,這很容易完成。例如,我的設置:

寬屏16:9的23" 顯示器在1920x1080像素的

h^2+w^2=23^2 and h/w=9/16 

h=11.28 and w=20.05 inches 

get(0,'Screensize')回報[1 1 1920 1080]

get(0,'ScreenPixelsPerInch')回報96

所以1920/20.05 = 95.761080/11.28 = 95.74

也許我很幸運,但這種方法爲我工作。

+2

我不知道matlab,但通常操作系統提供的屏幕的DPI是僞造的,也就是說,它們只是用於獲取縮放文本的一些線索(http://blogs.msdn。COM/B/oldnewthing /存檔/ 2004/07/14/182971.aspx?的PageIndex = 1)。因此,用這種方法可能你永遠不會獲得「真實」的屏幕尺寸。 – 2010-06-09 16:48:01

4

什麼是您的應用程序中的「像素」?

如果你的意思是屏幕像素,看看其他答案。如果您指圖像像素,則需要知道圖像的物理大小(高度,寬度),然後可以計算像素的寬度。

例如,如果您的圖像是10x10 cm和512x512像素,則一個像素寬度爲10/512 cm。以像素爲單位乘以10/512的距離,得到以釐米爲單位的距離。

+0

這是正確的一般答案! – Bedo 2012-11-10 12:51:22