Matlab 一阶导数滤波器
我最近的任务是在自己的图像上使用一阶导数过滤器。讲师说,我应该首先在行上固定y值和预制件f(x+1)-f(x),然后在列上固定新的“x”值和预制件f(y+1)-f(y) 注意:我被要求手动执行此任务,而不是使用filter2()或任何其他编程函数,因此请不要建议我使用filter2()或类似函数。谢谢 我试着调出所有的像素,然后通过Matlab 一阶导数滤波器,matlab,Matlab,我最近的任务是在自己的图像上使用一阶导数过滤器。讲师说,我应该首先在行上固定y值和预制件f(x+1)-f(x),然后在列上固定新的“x”值和预制件f(y+1)-f(y) 注意:我被要求手动执行此任务,而不是使用filter2()或任何其他编程函数,因此请不要建议我使用filter2()或类似函数。谢谢 我试着调出所有的像素,然后通过 fid = fopen('image.raw') myimage = fread(fid,[512 683], '*int8') fclose(fid) imsz
fid = fopen('image.raw')
myimage = fread(fid,[512 683], '*int8')
fclose(fid)
imsz = size(myimage)
x = imsz(1)
for I = 1:512
for J = 1:683
X(I) - X(I-1) = XX
但它似乎不起作用,我也不太明白为什么。如果你能帮助我,或者给我指出正确的方向,我将非常感激 如果过滤后的图像是
div
,则
for Y = 1:682
for X = 1:511
div(X, Y) = myimage(X + 1, Y + 1) - myimage(X,Y);
end
end
记住,最后一行和最后一列不会被过滤 如果过滤后的图像是
div
,则
for Y = 1:682
for X = 1:511
div(X, Y) = myimage(X + 1, Y + 1) - myimage(X,Y);
end
end
记住,最后一行和最后一列不会被过滤 首先,您的代码语法不正确:
myimage
,但在尝试计算导数时使用了未定义的变量X
a(2:end) - a(1:end-1)
其中a
是您的数组。end
关键字指定数组中的最后一个索引
要计算图像(二维矩阵)的导数,需要确定要沿哪个轴执行该操作。要沿y轴近似导数,请执行以下操作:
X(2:end, :) - X(1:end-1, :)
X(:, 2:end) - X(:, 1:end-1)
您可以验证这是否提供与diff(X,1)
相同的结果(或者只需diff(X)
)。要计算沿x轴的近似导数(相当于diff(x,2)
),请执行以下操作:
X(2:end, :) - X(1:end-1, :)
X(:, 2:end) - X(:, 1:end-1)
冒号(
:
)与将1:end
写入对应维度的数组下标相同。首先,您的代码在语法上不正确:
myimage
,但在尝试计算导数时使用了未定义的变量X
a(2:end) - a(1:end-1)
其中a
是您的数组。end
关键字指定数组中的最后一个索引
要计算图像(二维矩阵)的导数,需要确定要沿哪个轴执行该操作。要沿y轴近似导数,请执行以下操作:
X(2:end, :) - X(1:end-1, :)
X(:, 2:end) - X(:, 1:end-1)
您可以验证这是否提供与diff(X,1)
相同的结果(或者只需diff(X)
)。要计算沿x轴的近似导数(相当于diff(x,2)
),请执行以下操作:
X(2:end, :) - X(1:end-1, :)
X(:, 2:end) - X(:, 1:end-1)
冒号(
:
)与将1:end
作为相应维度的数组下标一样。我手头没有Matlba,老实说,我不会写你的代码!因此,有几点建议:您必须在左侧而不是右侧编写要分配操作的变量。你必须写X[i,:]来索引一行,或者写X[:,j]来索引一列。除了评论/回答中所说的,我建议不要硬连接循环的上限。而是将该值赋给一个变量,或调用要循环的向量/矩阵上的size
。这避免了在处理不同大小的数组时出现错误。我手头没有Matlba,我不会编写您的代码!因此,有几点建议:您必须在左侧而不是右侧编写要分配操作的变量。你必须写X[i,:]来索引一行,或者写X[:,j]来索引一列。除了评论/回答中所说的,我建议不要硬连接循环的上限。而是将该值赋给一个变量,或调用要循环的向量/矩阵上的size
。这避免了在处理不同大小的数组时出现错误。对于语法问题,很抱歉,我匆忙输入了代码,忘记了几行描述X的内容。感谢您的帮助,非常感谢helpful@user2475404“欲速则不达……”@user2475404:下次请保持礼貌,仔细复习你的问题。你可能不会总是像今天这样幸运。您可能也会发现有帮助。很抱歉语法问题,我匆忙输入了代码,忘记了几行描述X的内容。谢谢您的帮助,非常感谢helpful@user2475404“欲速则不达……”@user2475404:下次请保持礼貌,仔细复习你的问题。你可能不会总是像今天这样幸运。你可以