分辨率测试方法 ——TV line检测

 
 
 
 

1、TV line检测

1-1、TV line检测概述

  • TV line主要用于主观测试,总体来说没有一个具体的标准。大多数公司是以人的读取为标准。不同人的读取,以及状态的不同都会导致读取值的不稳定, 也有一些读取TV line的软件如HYRes、iSeetest。
  • 其优点包括有: 非常直观,用肉眼就可以观察、 对测试要求相对SFR较低、 数据覆盖面大,比频率线测试精确、 可以用软件辅助测试,得到更为精确的数据。

1-2、怎样使用TV line检测

  • 对ISO12233测试卡拍摄取景
1 、环境光线要求: 整个图表表面照度均匀( 大小应以300Lux居中 误差10%,照明光线不得直接进入镜头;
2、摄像头摆放要求: 调节终端镜头焦距、与辨率测试卡之间的距离,使测试图卡成像清晰, 正确的取景区域和测试位置如下;
3、测试镜头的要求:镜头透光量>=摄像头标定分辨率,镜头畸变率>=90%;
 
  • 选取楔形线进行分析
选取楔形线方法是:楔形线的一端能够区分黑白线,一端无法区分黑白线,如下图:
 
  • 怎么根据楔形线得出分辨率的值;
1、用肉眼看
     我们可以看出下图的黑白线能够分清的部位是4.25左右;因为ISO12233测试卡的标度是100X的,所以这里得出的测试结果就是425线;
 
2、iSeetest自动分析 (下载地址: http://www.iseetest.net/
     得出测试结果是 421 线
     注:测试中心分辨率时要选择中心,测试四角时要选择四周;
            线数看选取的楔形线精度的最大值来定义(如下选择的楔形线精度的最大值是600);
            若选取的是横向和斜向的楔形线,需旋转成竖向的;
 
3、 iSeetest手动分析(由于图片及软件原因,自动分析有可能不准,此时需要采用手动分析,也可将手动分析作为自动分析后的再次确认步骤);
 
     得出的测试结果是418线, 可以看出,三种测试值是非常相近的,但是会有一定误差,像这样的误差是在允许范围内的。
 

1-3、测试验收标准

 

1-4、测试结果记录

分辩率测量结果为水平1250条、垂直1200条、45度右上倾斜1150条、45度右下倾斜1100条时的标记例子如下。
 
分辨率:1100条(仅记载最低数值的例子)
 
分辨率:水平1250条、倾斜1100条(记载最高数值和最低数值的例子)
 
分辨率:水平1250条、垂直1200条、倾斜1100条(记载水平、垂直和最低数值的例子)
 
分辨率:水平1250条、垂直1200条、右上1150条、右下1100条(记载所有数值的例子)
 
 
 
 
 
 
在Python和OpenCV中实现直线检测,可以使用Hough变换来检测直线。Hough变换是一种常用的图像处理方法,可用于检测直线、圆等几何形状。 以下是一个简单的示例代码,使用Hough变换来检测直线并计算交点: ```python import cv2 import numpy as np # 读取图像 img = cv2.imread('test.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 边缘检测 edges = cv2.Canny(gray, 50, 150, apertureSize=3) # Hough变换检测直线 lines = cv2.HoughLines(edges, 1, np.pi/180, 200) # 计算交点 points = [] for i in range(len(lines)): for j in range(i+1, len(lines)): rho1, theta1 = lines[i][0] rho2, theta2 = lines[j][0] if abs(theta1 - theta2) < np.pi/4: continue a = np.array([[np.cos(theta1), np.sin(theta1)], [np.cos(theta2), np.sin(theta2)]]) b = np.array([rho1, rho2]) x0, y0 = np.linalg.solve(a, b) points.append((int(x0), int(y0))) # 绘制直线和交点 for line in lines: rho, theta = line[0] a = np.cos(theta) b = np.sin(theta) x0 = a*rho y0 = b*rho x1 = int(x0 + 1000*(-b)) y1 = int(y0 + 1000*(a)) x2 = int(x0 - 1000*(-b)) y2 = int(y0 - 1000*(a)) cv2.line(img, (x1,y1), (x2,y2), (0,0,255), 2) for point in points: cv2.circle(img, point, 5, (0,255,0), -1) # 显示图像 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在代码中,首先读取图像并进行灰度转换和边缘检测。然后使用Hough变换检测直线,并计算交点。最后绘制直线和交点,并显示图像。 需要注意的是,在计算交点时,需要将两条直线的极坐标表示转换为直角坐标表示,并使用线性方程组求解。 希望这个例子能够帮助到你实现直线检测并计算交点。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值