gpt4 book ai didi

arrays - 在 Julia 的数组中创建一个实心矩形

转载 作者:行者123 更新时间:2023-12-04 11:26:43 25 4
gpt4 key购买 nike

我是 Julia 的新手,我正在尝试了解基本的数据可视化。我正在创建一个二维噪声数组:

xRange, yRange = 1:1:300, 1:1:300
maxVal = 0.3
noiseArr = rand(length(xRange),length(yRange))*maxVal
结果数组如下所示(左)。我想识别特定像素——由具有长度、宽度和旋转度的矩形定义——并将这些值设置为已知数字。最终,我想要像下图(右)所示的图像。
我没有包偏好,但我一直在查看图像、OpenCV 等。我希望有一种直接的方法来做到这一点。
enter image description here

最佳答案

I would like to identify specific pixels -- defined by a rectangle with length, width, and rotation


知道长度、宽度和旋转不足以在平面上唯一地定位矩形。您还需要翻译。
这是一个简单的代码,它为您提供了一个示例(它不是非常高效,但对于演示目的来说足够快):
function rectangle!(x1, x2, x3, noiseArr, val)
A = [x2-x1 x3-x1]
b = x1
iA = inv(A)

for i in axes(noiseArr, 1), j in axes(noiseArr, 2)
it, jt = iA * ([i, j]-b)
0 <= it <= 1 && 0 <= jt <= 1 && (noiseArr[i, j] = val)
end
end

x1 = [40, 140]
x2 = [230, 100]
x3 = [50, 170]
rectangle!(x1, x2, x3, noiseArr, 0.0)
在其中 - 而不是传递旋转、缩放和平移,我认为更容易假设您传递矩形的三个顶点 x1 , x2 , 和 x3 (假设它的边由 x1-x2x1-x3 对形成)并计算您需要的仿射变换。 val是矩形内的像素应该得到的值。
请注意,本质上我们所做的是计算矩形到单位正方形的反向仿射变换并检查哪些点位于单位正方形内(这很容易)。
(正如上面的评论者所指出的 - 这不是一种最佳方法,因为您进行了大量不需要的计算,但我希望它具有更易于理解的好处;Julia 的好处还在于编写这样的循环不是问题,它仍然运行得足够快)

关于arrays - 在 Julia 的数组中创建一个实心矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64054793/

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