Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV MATLAB:如何绘制具有特定强度轮廓的线?_Matlab_Image Processing_Opencv_Opencvdotnet - Fatal编程技术网

OpenCV MATLAB:如何绘制具有特定强度轮廓的线?

OpenCV MATLAB:如何绘制具有特定强度轮廓的线?,matlab,image-processing,opencv,opencvdotnet,Matlab,Image Processing,Opencv,Opencvdotnet,下面是图像中线的任意手绘强度剖面图: 任务是画一条线。轮廓可以近似为圆弧或椭圆。 这是我做的相机校准。由于我没有实际的工业摄像机,我试图模拟校准所需的校正 这个问题可以重新表述,因为我想要像素值,它将遵循与上面类似的绘图。我希望使用程序(最好使用opencv)来完成此操作,而不是手动输入这些值,因为我的行中有数千个像素。 一个算法/伪代码就足够了。另外请注意,我没有任何实际的强度分布,否则我会读取这些值 您什么时候会遇到这种情况 假设你们用相机拍了一张照片(假设是完全白色的),你们的物体被放在

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

任务是画一条线。轮廓可以近似为圆弧或椭圆。 这是我做的相机校准。由于我没有实际的工业摄像机,我试图模拟校准所需的校正

这个问题可以重新表述,因为我想要像素值,它将遵循与上面类似的绘图。我希望使用程序(最好使用opencv)来完成此操作,而不是手动输入这些值,因为我的行中有数千个像素。
一个算法/伪代码就足够了。另外请注意,我没有任何实际的强度分布,否则我会读取这些值

您什么时候会遇到这种情况


假设你们用相机拍了一张照片(假设是完全白色的),你们的物体被放在桌子上,相机在垂直方向正好在它上面。与在边缘反射的光相比,从相机垂直向下进入图片中心的光强度更强。测量图像中任何一条直线上的像素值,就会发现强度曲线,如上图所示。由于我暂时没有相机,我想模仿这种情况。如何做到这一点

这不完全是图像处理,而是图像生成。。。但无论如何

既然你想要一个弧,我们仍然需要在这个弧上有三个点,让我们看一下第一点、中间点和最后一点(我认为关键特征):

现在画一个包含这些点的圆弧。 这里已经针对matlab讨论了这个问题:

如果假设中间值总是较大(因此必须绘制圆的上部),则可以使用以下工具绘制:

x = x1:x3;
y = b+sqrt(r^2-(x-a).^ 2);
plot(x,y);
您可以使用调整可见窗口

xlim([1 N]);
ylim([200 260]);
这给了我以下结果:

x = x1:x3;
y = b+sqrt(r^2-(x-a).^ 2);
plot(x,y);
xlim([1 N]);
ylim([200 260]);