问题标签 [back-projection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
328 浏览

3d - 如何在知道它的 2D 坐标的情况下确定 3D 三角形中点的 3D 坐标

我在 VB 类中有这个代码,它将 3D 点转换为 2D 点以在屏幕上绘制:

使用此代码,我将三个 3D 点转换为三角形中的 2D 点以绘制 3D 三角形。

从淹没三角形中,如何转换三角形内部的 2D 点(Xp,Yp)并将其转换为 3D 点?

0 投票
0 回答
280 浏览

c++ - CamShift 有时只跟踪对象,即使 BackProjection 非常好

编辑:看起来像是物体从物体进入的框架的一侧。不知道为什么会这样,但从右边进入它总是被捡起,从顶部,它永远不会被捡起,直到它靠近右侧。

简而言之,我正在尝试使用 OpenCV 和 CamShift 跟踪对象。我已经计算并显示了我的反投影图像,它看起来很棒。它基本上是黑色背景上的白色斑点。但是,我的程序有时只会拾取它。CamShift 的搜索窗口包含整个图像,然后当它出现在屏幕上时缩小到对象,然后在对象离开时再次展开。这工作正常大约 2/3 次。我不明白第三次出了什么问题。

http://imgur.com/a/rVw2l:显示我的意思的屏幕截图专辑。绿色矩形是搜索窗口 (trackWindow),红色是 CamShift (trackBox) 的旋转矩形输出。

有任何想法吗?我尝试使用标准,但这似乎没有多大作用。

0 投票
1 回答
1141 浏览

python - BackProjection 和 Opencv 的问题

我正在尝试使用 opencv 实现反投影算法来检测手。该算法由多个来源组成。我尝试了多种方法,例如形态学和在投影中添加背景减法以尝试获得更好的结果。我也在网上查看。但是,我继续得到下面的图片。有没有人对我可能做错了什么有建议?

-谢谢

这是我的代码,只有 backProjection:

这是用于帮助识别手的图像: 图像读取为手的图片

这是阈值图片: 在此处输入图像描述

这张照片显然没有太多的手和很多噪音。

0 投票
1 回答
225 浏览

matlab - matlab中滤波反投影/iradon的定性和定量分析

我想知道是否有人遇到过这个问题。

我可以从类似于原始图像的 matlab 重建图像,但是,实际值总是不同的。

例如,原始图像在矩阵中的值范围为 0 到 1,而我的重建图像的范围为 -0.2 到 0.4。

重建的图像看起来与原始图像相似,只是图像中的数据具有不同的比例。

这是我的意思的示例代码。

0 投票
1 回答
554 浏览

opencv - 边缘方向直方图反投影

我正在使用 opencv 开发对象检测模块,并且使用“边缘方向直方图”作为对象描述符。

生成直方图后,我将其投影到原始图像上(在计算出其中的方向之后)。

是这样吗,因为后面的项目输出显示了很多不是需要跟踪的对象的白色区域。

程序如下:

  1. 使用 Sobel 算子和相位函数为目标对象生成 EOH。
  2. 计算图像边缘方向(无直方图)以将直方图投影到其上。
  3. 执行从 EOH 到方向图像的反投影。

我需要确认我的假设是正确的。

如果我将 EOH 反投影到图像本身(灰度)而不是方向上,这是否有意义?!

一些图片以获得更多说明:

  • 目标是跟踪 panadole box .. 场景如下所示:(左)

  • 阈值化后的方向图如下(针对目标)(中)

  • 和背投的图像如下:(右)

http://postimg.org/image/nzx7noav5/

多谢你们。

0 投票
1 回答
127 浏览

c++ - 通过 glm::unproject 将 2D 边缘到 3D 模型空间 - 光线不与模型相交

我尝试通过碰撞进行光线拾取,这意味着屏幕上的 2D 位置被转换为模型空间中的 3D 位置。我的问题是,光线并不总是与模型相交以产生有效的 3D 位置。

这就是我所做的:

我在帧缓冲区中创建了一个深度纹理,以便glReadPixels()稍后使用它。

之后我将深度线性化并将其存储到cv::Mat_<uchar>边缘检测中cv::Canny():(不要忘记翻转图像。)

...并通过

轮廓的 2D 坐标 (x,y) 现在正在通过以下方式转换为 3D 模型坐标:

完成此操作并查看它显示的 3D 点后,某些光线不会与模型相交。射线的长度接近远平面的值。我试图通过查看输入 (x,y) 周围的一个像素邻域来扩大输入。仍然有一些光线不与模型相交。

知道这是为什么吗?或者如何解决?具有先前模糊的边缘提取是否负责?

茶壶

我附上了一张可以看到分布的图片。蓝色点是不与模型相交的点(光线长度接近远平面的值),红色点是。我使用茶壶模型进行测试。

为了便于阅读,我不想在这里粘贴我的整个代码。如果需要更多代码或信息来更好地理解可能出现的问题,请告诉我。

0 投票
1 回答
631 浏览

python - OpenCv RGB 直方图反投影未按预期工作

我使用反投影在知道人的直方图的图像中定位一个人。问题是它不适用于皮肤或透明衣服。这是我得到的:反投影结果

这是我用来计算感兴趣区域的 BGR 直方图的代码:

我得到的直方图与人的颜色一致,但是当我在包含人的图像上应用反投影时,只有人的暗区域得到非零值,如Back-projection result所示。

我在一个像素上测试了直方图的反投影,但我不理解结果。我明白了:

像素 (b=66, g=66, r=34) 应对应于直方图 bin [2,2,1],因为 histSize = [8,8,8],但反投影返回 0 而不是 141。

知道我做错了什么吗?

0 投票
1 回答
481 浏览

matlab - 为什么iradon返回负像素值?

我使用 LabVIEW 软件以 1.8 度的步距角进行了 200 个投影。图像大小为 2748 x 2748 像素,uint16。然后使用 Matlab,我加载投影图像,进行平场校正,将图像大小调整 1/3 并将图像保存为 .mat 文件。然后我为过滤后的反投影运行下面的代码。

如果我在这段代码中使用过滤器,我会得到负像素值。

但是,如果我在没有过滤器的情况下运行代码,我会得到正像素值。

知道为什么 iradon 在过滤后的反投影中返回负像素值吗?

谢谢你。

努鲁尔

0 投票
1 回答
568 浏览

image-processing - MeanShift公式理解

我正在使用来自这里的想法来实现用于对象跟踪的 MeanShift 算法:http ://www.cse.psu.edu/~rtc12/CSE598C/meanShiftColor.pdf

现在我有后续帧的反投影图像。此类图像中的每个像素都标记了属于被跟踪对象的概率:在此处输入图像描述

上述来源中的 MeanShift 公式如下所示: 在此处输入图像描述

w(x i ) = 反投影图像中的像素。
x = 当前中心像素。

我不明白是什么spatial kernel
假设它可以是大小为 5x5 的 2D 高斯核,则 K(x i -x)*w(x i ) 可以用预模糊图像的像素代替。

我的代码看起来是这样的:

所以我只是通过平滑的反投影图像进行迭代,并且对于每个像素:
将其值添加到分母,
将其值乘以从当前中心到分母的偏移。

它在第二次迭代时收敛,但 shift 是错误的,我不知道如何调试它。可能是公式实现中的问题。 在此处输入图像描述

请用人类语言向我解释什么是空间内核以及如何将其应用于权重图像。谢谢!

0 投票
0 回答
338 浏览

matlab - 在MATLAB中实现动态Radon变换的Landweber迭代

我正在研究动态逆问题和氡变换。术语“动态”是指对象(最终我将通过测量来重建其图像)随着时间的推移而变形。你可以想象人体内的心脏或肺。因此,需要修改通常的图像重建工具(如过滤后的反投影)来处理变形。就我而言,变形由 中的平滑函数给出R^2

φ^t(x,y)=(φ(t,x),φ(t,y))=(x*(1+c*x), y*(1+d*y))

其中它表示哪个粒子在(x,y)时间 instance的位置t。这里的系数cd由下式给出

现在考虑以下动态逆算子(广义 Radon 变换):

\iint_{R^2}是双重积分R^2\delta是通常的delta函数。使用变量的变化,上面的运算符可以写成

其中反函数φ^{-1}由下式给出

φ^{-1}(t,x) = (\sqrt{1+4c*x}-1)/(2c), φ^{-1}(t,y)= (\sqrt{1+4d*y}-1)/(2d)

和雅可比

J(t,x,y)=1/(\sqrt{(1+4c*x)(1+4d*y)).

t是一个决定时间和光线方向(角度)的参数。现在该函数f(φ^t (x,y))显示时间实例的真实对象(我们称之为 Shepp-Logan SL 的原始图像)的状态t。例如当t=0,那么函数φ^t就是恒等式,所以我们得到f(x,y)哪个是原始图像 SL。

我想用 Landweber 迭代进行图像重建,因为与其他方法相比,运行它似乎并不昂贵。Landweber 迭代采用以下形式

哪里\gamma是步长参数让我们说10^{-3}。在这里A^T,我的意思是算子的伴随,A称为反投影。因此对于一个函数hA^Th将采用以下形式

因此,如果我们在上面的伴随方程中替换hg-Af^k并代入 Landweber 迭代,我们得到

这是我的目标。假设我们将原始对象 SL 从 变形t=0t=5。然后我们取变形 SL 的氡气,在 处t=5给出测量值t=5。我和我的朋友编写了一个 MATLAB 代码,我们可以在其中成功地对原始对象 SL 进行变形,然后进行 Radon 变换(正向问题)。t=0现在我的目标是通过执行 Landweber 迭代公式(如上所示)从变形 SL 处的测量中重建原始对象 SL处t=5。我们也为这部分编写了代码,但我们无法重建原始 SL。以下是代码:

最初的 Object Shepp Logan SL

前向变形:

逆变形:

跑:

我想知道这里是否有人熟悉这个主题并且可以提供任何帮助。

如果不清楚,请发表评论,我将回答您的问题。先感谢您。