gpt4 book ai didi

image - 如何使用 Octave 音阶和矩阵处理来平均多个图像以减少噪声?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:14 26 4
gpt4 key购买 nike

更新
这是我的代码,它将两个矩阵相加,并使用逐元素相加,然后除以2。

function [ finish ] = stackAndMeanImage (initFrame, finalFrame)

cd 'C:\Users\Disc-1119\Desktop\Internships\Tracking\Octave\highway\highway (6-13-2014 11-13-41 AM)';

pkg load image;

i = initFrame;
f = finalFrame;

astr = num2str(i);

tmp = imread(astr, 'jpg');

d = f - i

for a = 1:d

a

astr = num2str(i + 1);

read_tmp = imread(astr, 'jpg');

read_tmp = rgb2gray(read_tmp);

tmp = tmp :+ read_tmp;

tmp = tmp / 2;


end

imwrite(tmp, 'meanimage.JPG');

finish = 'done';
end

下面是两个示例输入图像
http://imgur.com/5DR1ccS,AWBEI0d#1
这是一张输出图像
http://imgur.com/aX6b0kj
我真的很困惑到底发生了什么事。不过,我还没有落实其他答案所说的话。
旧版
我正在做一个图像处理项目,我现在手动选择“空”或只有背景的图像,这样我的算法可以计算出差异,然后再做一些分析,我有一个简单的代码,计算出两个图像的平均值,我已经将其转换成灰度矩阵,但这只起作用对于两幅图像,因为当我找到两幅图像的平均值,然后取这个平均值,然后找到这个平均值与下一幅图像的平均值,然后重复这样做,我最终得到的是一幅完全无用的被冲掉的白色图像。你什么都看不见。
我发现在Matlab中有一个叫做imFuse的函数可以对图像进行平均我想知道是否有人知道imFuse用于组合图像的过程,我很高兴将其实现为八度音阶,或者是否有人知道或已经编写了一段代码来实现类似的功能同样,我不是要求任何人为我编写代码,只是想知道这是什么过程,如果已经存在的功能已经存在,这是我研究之后没有发现的。
谢谢,
航空飞行器

最佳答案

你不应该以一个被淘汰的形象结束。取而代之的是,你应该得到一个图像,从技术上讲,这是暂时的低通滤波。这意味着一半的信息内容形成最后一幅图像,第二幅图像的四分之一,第三幅图像的八分之一,等等。
实际上,运动图像的效果类似于响应时间慢的显示器。
如果你以一个白色的形象结束,你就做错了NKJT对类型挑战的猜测很好。另一种可能是你在把两幅图像相加后忘记了用二除。
还有一件事如果对图像执行线性操作(例如平均),则图像强度比例应为线性。如果您只是使用rgb值或一些简单地从它们计算的灰度值,您可能会被图像的非线性所困扰。此属性称为gamma校正(不可否认,大多数图像处理程序都忽略了这个问题,因为它并不总是一个大挑战。)
当您的项目计算图像的差异时,您应该考虑到这一点我建议使用线性化的浮点值不幸的是,线性化取决于图像数据的来源。
另一方面,平均通常是减少噪音的最有效方法所以,假设图像足够相似,你就在正确的轨道上。
然而,在看过你的图片后,你似乎真的想做些别的事情而不是平均图像。如果我正确地理解你的意图,你想摆脱你的汽车在你的道路凸轮给你只是无车的背景,然后你可以从图像中减去得到汽车。
如果这是你想要做的,你应该考虑使用中值滤波器而不是平均值。这意味着以11个连续帧为例。对于每个像素,你有11个不同的值现在您可以对这些值进行排序,并将中间的(第6个)值作为背景像素值。
如果您的道路大部分时间是空的(至少6帧11),那么第6个样本将代表道路,而不考虑通过您的相机的汽车的颜色。
如果道路为空,则中值滤波的结果接近平均值(高斯白噪声的平均值比较好,但差别不大)但是你的平均值会受到白车或黑车的影响,而中值滤波则不受影响。
中值滤波的问题是它计算密集很抱歉,我说的是非常破烂和古老的八度音阶,所以我不能给你任何有用的代码。在Matlab或Pylab中,你可以将11个图像叠加到M×N×11阵列,然后沿着深度轴使用单个中值命令。(当我说密集型时,我不是说不能用你的数据实时完成它可以,但比平均值要复杂得多。)
如果你的车真的很多,在不到一半的时间里,你可以看到汽车后面的路。那么中位数的把戏就会失败。你将需要采取更多的样本,然后找到最典型的价值,因为它很可能是道路(除非所有汽车有相似的颜色)在那里,使用彩色图像会有很大帮助,因为汽车在RGB或HSV中看起来比在灰度中更不一样。
不幸的是,如果你需要求助于这种类型的处理,这条路有点滑而且崎岖平均数是非常容易和快速的,中位数是容易的(但不是那么快),但事情往往变得相当复杂。
我又想起了一个顺口溜。如果你想有一个滚动平均值,有一个非常简单有效的方法来计算它的任意长度(任意数量的平均帧):

# N is the number of images to average
# P[i] are the input frames
# S is a sum accumulator (sum of N frames)

# calculate the sum of the first N frames
S <- 0
I <- 0
while I < N
S <- S + P[I]
I <- I + 1

# save_img() saves an averaged image
while there are images to process
save_img(S / N)
S <- -P[I-N] + S + P[I]
I <- I + 1

当然,您可能会希望使用循环和“+=和-=运算符”,但这个想法仍然存在。对于每一帧,您只需要一个减法、一个加法和一个除以常数(在某些情况下,如果您赶时间的话,可以将其修改为乘法甚至按位移位)。

关于image - 如何使用 Octave 音阶和矩阵处理来平均多个图像以减少噪声?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211272/

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