基于.NET Core 3.1的伽马谱仪白点亮度采集性能优化问询
伽马谱仪图像白点检测性能优化问题
- 用摄像头制作伽马谱仪,矩阵被箔片覆盖,采集到的图像完全黑暗;当宇宙射线、伽马射线或其他粒子击中矩阵时会产生白点,白点亮度可反映粒子能量。
- 程序需要将这些白点的亮度收集到数组/列表中。
当前使用AForge实现逐像素扫描图像寻找白点,但该方法耗时过长,导致大量帧因旧帧扫描未完成而被遗漏。使用的是.NET Core 3.1,当前代码如下:
private void Scan(Bitmap map) { Rectangle rect = new Rectangle(0, 0, map.Width, map.Height); BitmapData bmpData = map.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); IntPtr ptr = bmpData.Scan0; int bytes = bmpData.Stride * map.Height; byte[] rgbValues = new byte[bytes]; Marshal.Copy(ptr, rgbValues, 0, bytes); int stride = bmpData.Stride; for (int column = 0; column < bmpData.Height; column++) { for (int row = 0; row < bmpData.Width; row++) { Color pixel = Color.FromArgb(rgbValues[(column * stride) + (row * 3)], rgbValues[(column * stride) + (row * 3) + 1], rgbValues[(column * stride) + (row * 3) + 2]); if (pixel.GetBrightness() > 0.2) Dots.Add(pixel); } } }
内容的提问来源于stack exchange,提问作者UndefinedUser
相关产品推荐
相关产品推荐

