gpt4 book ai didi

c - 我有一个点在图像周围弹跳。需要计算像素组(物体表面)的反射角

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:35 24 4
gpt4 key购买 nike

假设我们有一张黑白图像(像素缓冲区),因此每个像素要么是黑色要么是白色(不是灰度)。

现在在这些图像中间的某个地方,放置一个绿点。它可能有 n 的半径用于渲染目的,但它实际上是一个公正的点。给点一个随机选择的方向和速度,然后开始移动。如果图像全是白色像素,则该点会从图像边缘反弹,在图片周围无限游荡。这很容易……只需反转点 vector 的上升或运行。

接下来,假设图像中有一些黑色像素团。当点遇到这些黑色像素团时,需要计算反射角。这也很容易,因为黑色像素具有固定的斜率,如我的草图所示(蓝色 X 代表黑色像素)。您可以找到蓝色 X 的斜率并轻松计算新 vector 。

但是黑色像素形成非常不友好的表面的情况又如何呢?有哪些方法可以计算出这个角度?

enter image description here

这是我感兴趣的主题。

一定有一些算法可以用于这种目的,但我在学校里从未遇到过。我不是在问如何对此进行编码,而是在询问编写算法来执行此操作的方法。我有一些我会尝试的想法,但如果有一些标准的方法可以做到这一点,我想了解它们。

显然,我想从黑白开始,然后进入 RGBA。

我正在寻找关于此类主题的任何引用资料。非常非常欢迎网站、书籍或其他引用资料。

此外,如果有不同的 StackOverflow 标签可能不错,请告诉我。

非常感谢!

编辑********** 更多图片和信息

也许我不清楚“不友好的表面”是什么意思。在上一张图片中,我们的蓝色 X 恰好是一条线。想象一下它不是一条线,而是一个奇怪的形状的情况。

我们从以 2 的斜率行进的绿色像素开始。假设它的 vector 是每帧 12 个像素的 vector 。它会有一个像这样的预计路径: enter image description here

但是假设我们没有友好的台词,而是这样的: enter image description here

在我看来,如果这是一个球和几堵墙,我可以想象会发生什么。

最佳答案

寻找图像处理中使用的边缘检测算法。一些边缘检测器也近似于边缘的方向。

您可以将绿点的像素邻域(可能介于 3x3 和 7x7 之间)视为一个小的边缘方向检测问题。一种方法是在像素处进行两次传递:

  1. 在第一遍中,使用 Gaussian filter 平滑锐利的黑/白像素。 .
  2. 在第二遍中,应用边缘检测运算符,例如 Sobel , PrewittRoberts产生像素强度的 X 和 Y 导数。然后,您可以将方向近似为:

    角度 = arctan(dx/dy)

平滑 channel 的动机是为边缘检测运算符提供来自较远像素的信息。

Canny edge detector 上的维基百科页面对获取边缘的方向(“梯度”)进行了很好的讨论,包括可用于平滑的特定高斯滤波器的示例。

关于c - 我有一个点在图像周围弹跳。需要计算像素组(物体表面)的反射角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16616479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com