2010-06-09 41 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