下面是图像中线的任意手绘强度剖面图:

任务是绘制线。轮廓可以近似为圆或椭圆的弧。这是我正在做的相机校准。由于我没有实际的工业相机,我试图模拟校正所需的校准。
这个问题可以重新表述,因为我想要像素值,这将遵循一个类似于上面的情节。我想使用程序(最好使用opencv)来完成这个任务,而不是手动输入这些值,因为我的行中有成千上万的像素。
一个算法/伪码就足够了。此外,请注意,我没有任何实际的强度剖面,否则我会读这些值。
你什么时候会遇到这样的情况?
假设你从照相机上拍摄了一张照片(假设是完全白色的),你的对象被放在桌子上,相机就在它上方的垂直方向上。与边缘反射的光线相比,从摄像机垂直向下照射在图像中心的光的强度将更强。你测量图像中任何一条线的像素值,你会发现像上面所示的强度曲线。因为我暂时没有相机,所以我想模仿这种情况。如何做到这一点?
发布于 2012-05-25 11:29:01
这不是图像处理,而是图像生成.但无论如何。
既然你想要一条弧形,我们还需要在那条弧线上有三点,让我们取第一点、中间点和最后一点(我认为的关键特征):
N = 100; % number of pixels
x1 = 1;
x2 = floor(N/2);
x3 = N;
y1 = 242;
y2 = 255;
y3 = 242;现在画一个包含这些点的圆弧。这个问题已经在matlab:http://www.mathworks.nl/matlabcentral/newsreader/view_thread/297070中讨论过了。
x21 = x2-x1; y21 = y2-y1;
x31 = x3-x1; y31 = y3-y1;
h21 = x21^2+y21^2; h31 = x31^2+y31^2;
d = 2*(x21*y31-x31*y21);
a = x1+(h21*y31-h31*y21)/d; % circle center x
b = y1-(h21*x31-h31*x21)/d; % circle center y
r = sqrt(h21*h31*((x3-x2)^2+(y3-y2)^2))/abs(d); % circle radius如果假设中间值总是较大的(因此,它是必须绘制的圆圈的上部部分),则可以使用以下方法绘制:
x = x1:x3;
y = b+sqrt(r^2-(x-a).^ 2);
plot(x,y);您可以用
xlim([1 N]);
ylim([200 260]);这给了我以下的结果:

https://stackoverflow.com/questions/10748374
复制相似问题