我目前正在运行一个程序,其中读取了图像的文件夹,这些图像被转换为.float64值,然后我使用这些值来查找平均和标准差图像。然后,我将在图像中绘制随时间的变化,但这部分是在我的问题之后。我已经修补了一段时间了,我已经无可救药地停留在我的标准差上了。
我已经写出了公式的工作原理,我相当确定我的代码完美地反映了这个公式,但是我所有的值都太高了,所以当我试图显示图像时,它完全是白色的。
sumImg = []
imgList = []在这里,我将遍历我的文件夹,获取图像文件,将它们转换为float64,并将这些值用于平均图像,并为标准差创建图像列表。
for filename in files:
img = Image.open("./data/" + filename)
img = np.float64(img)
imgList.append(img)
try:
sumImg += img
except:
sumImg = img
avgImg = sumImg/len(imgList)这就是我的问题所在,但我不确定。在这个数学中的某个地方,我的值变得比它们应该的值要高得多。
#standard deviation is:
#the square root of {(the sum of {(every number in your list minus the average) squared})
#divided by the number of items in the list minus 1}
stdImg = []
for image in imgList:
try:
stdImg += (image - avgImg)**2
except:
stdImg = (image - avgImg)**2
stdImg = np.sqrt(stdImg/(len(imgList)))
stdImg = np.clip(stdImg, 0, 255)
stdImg=np.uint8(stdImg)
mplot.imshow(stdImg)在此之后,剩下的就是将标准偏差与用户定义的阈值进行比较,并突出显示超过阈值的任何区域,这将指示图像列表上的移动。我是Python的新手,所以这可能是一个简单的错误。谢谢!
发布于 2021-03-20 02:34:17
解决了,图像没有被添加到列表中,必须用.insert()替换.append()
https://stackoverflow.com/questions/66713592
复制相似问题