炸弹熊 发表于 2007-8-21 09:48:33

[求助]摄像头扫描图片DPI的计算问题?

http://www.cpubbs.com/bbs/viewthread.php?tid=33402

上面的帖子是我问过一次有关事件结构的,事件结构搞定了,圆心坐标和半径都已经得到(半径的单位是像素),现在又遇到了另外一个困难,就是使用摄像头捕获的图片横向和纵向的DPI(像素每英寸)不一样,那么我得到的半径是像素,到底是应该除以横向的DPI还是纵向的DPI得到真实的长度呢? 我想不通啊,求做过图像处理的人帮帮忙,小弟不尽感激!

tx 发表于 2007-8-21 11:29:19

是这样的,如果要求不是非常精确的话,就用多少个像素代表1毫米就可以了.

炸弹熊 发表于 2007-8-21 12:01:45

先谢谢 tx 这么快回复我

我们使用了一个标准的样尺来校准,发现横向是1mm内包含了470个像素点,纵向是1mm包含了482个像素点,这就证明横向纵向的DPI是不同的(摄像头是配合显微镜使用的,见附件图片,标尺一小格代表实际尺寸0.1mm)。

我有这样一个想法,不知道对不对,就是在最初计算的时候,就将取得的三个点全部转化为mm,这样计算出来的圆心坐标和半径就都是mm单位了,但又想不到用什么方法来验证这样做对不对。头疼啊~

[ 本帖最后由 炸弹熊 于 2007-8-21 12:35 编辑 ]

tinywind 发表于 2007-8-21 12:10:37

可不可以在获取3点坐标后 直接采用平面几何算法 直接得到 圆心坐标和半径呢?

采用公式结点来自己写个函数 这样似乎就能避开纵横比

炸弹熊 发表于 2007-8-21 12:27:15

tinywind,你好,我是获取3个点坐标(x,y均为坐标像素值)后,直接采用公式节点平面几何算法来计算的圆心和半径,但是出来的结果r单位仍为像素,我是想问怎么样将这个r转化为mm单位,因为图像的横向和纵向DPI不同,我不知道怎么转化。

网上搜索到的已知三点坐标求圆心和半径的公式(x0,y0是圆心坐标,r是半径):
x0 = ((y3 - y1) * (y2 * y2 - y1 * y1 + x2 * x2 - x1 * x1) + (y2 - y1) * (y1 * y1 - y3 * y3 + x1 * x1 - x3 * x3)) / (2 * (x2 - x1) * (y3 - y1) - 2 * (x3 - x1) * (y2 - y1));

y0 = ((x3 - x1) * (x2 * x2 - x1 * x1 + y2 * y2 - y1 * y1) + (x2 - x1) * (x1 * x1 - x3 * x3 + y1 * y1 - y3 * y3)) / (2 * (y2 - y1) * (x3 - x1) - 2 * (y3 - y1) * (x2 - x1));

r=((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0))**(1/2);

我想了想,还是在计算之前将取得的三个点按照横纵DPI先转化为mm单位,定义图片左上角那个点为零点,这样计算出来的结果也就是mm单位的了。不过又不知道这样做对不对,大家认为呢?
页: [1]
查看完整版本: [求助]摄像头扫描图片DPI的计算问题?