我正在拍摄三张图像并将其保存为Tiff图像,以便保留图像数据以供分析。在我的程序中,我将这三个图像加载为Emgu.CV.Image<Rgb,ushort>
。我需要将这三个图像一起添加并返回最终的tiff图像,这是三个单独图像的平均值。这样做最好的方法是什么?
答案 0 :(得分:0)
使用底层方法,您可以访问emgucv中图像的各个像素值,然后找到平均值。
对于彩色图像,EmguCV分别在图像的第0,1,2层存储红色,绿色和蓝色数据
for (int i = 0; i < img1.Width; i++)
{
for (int j = 0; j < img1.Height; j++)
{
img4.Data[i,j,0] = (img1.Data[i,j,0] + img2.Data[i,j,0] +img3.Data[i,j,0])/3;
img4.Data[i,j,1] = (img1.Data[i,j,1] + img2.Data[i,j,1]+ img3.Data[i,j,1])/3;
img4.Data[i,j,2] = (img1.Data[i,j,2] + img2.Data[i,j,2]+ img3.Data[i,j,2])/3;
}
}
注意:上面的代码假设所有图像都具有相同的大小(高度和宽度),如果不是这种情况,你应该迭代最大尺寸的图像,并设置不可用的图像(或更小的图像)对应在添加之前像素为零。
您还应该使用Math.Floor
或类似物来标准化每个像素值,因为像素值不能是小数。