Baumer工业相机堡盟工业相机如何通过BGAPI SDK和微软图像压缩算法进行图像压缩保存(C#)

简介: Baumer工业相机堡盟工业相机如何通过BGAPI SDK和微软图像压缩算法进行图像压缩保存(C#)

Baumer工业相机

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。


Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。

Baumer相机中原始图像可以和微软提供的图像压缩算法进行联合,从而实现外部图像进行压缩的功能设置。


Baumer工业相机和微软图像压缩技术背景

微软的图像压缩算法是基于JPEG XR标准的。这个标准是由微软与其他公司合作开发的,后来在2009年被采纳为一个国际标准(ISO/IEC 29199-2)。


JPEG XR 旨在提供比标准 JPEG 算法更好的压缩,同时保持高图像质量。它通过使用更复杂的压缩方法来实现这一点,该方法可以处理更广泛的颜色范围,并提供对透明度和无损压缩的更好支持。


微软对JPEG XR标准的实施包括一些额外的功能和优化,以进一步提高其性能。这些包括对渐进式解码的支持,子带编码,以及对色度适应和色彩空间转换的改进处理。


总的来说,微软的图像压缩算法是一个非常有效和广泛使用的解决方案,用于压缩图像,同时保持高质量和保真度。


有关于Baumer工业相机中的JPEG图像压缩相机如何使用内置图像压缩算法的的介绍,之前已经有相关的技术博客可以参考:


Baumer工业相机堡盟相机中的JPEG图像压缩相机如何通过BGAPI SDK和OpenCV的Mat进行图像转换(C++)


这里主要描述如何在C#的平台下实现通过BGAPI SDK实现微软图像质量压缩的核心代码


代码分析

本文介绍使用BGAPI SDK对Baumer的工业相机进行开发时,使用通过BGAPI SDK和微软的图像压缩算法进行图像转换的功能,注意Image算法的使用需要将Buffer图像先转为Bitmap数据,再进行压缩算法的使用。


第一步:先引用对应的微软图像的DLL文件

C#环境下引用System.Drawing.dll作为图像处理库代码如下所示:

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;

第二步:在回调函数里进行Buffer图像转换为Image图像进行压缩

下面为图像转换为Image图像的核心代码,如下所示:

//回调函数中直接将buffer转为Bitmap
#region//Convert BGAPI2.Buffer to Bitmap(it will reduce the additional cost time of callback function)
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap((int)mBufferFilled.Width, (int)mBufferFilled.Height, (int)mBufferFilled.Width, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, (IntPtr)((ulong)mBufferFilled.MemPtr + mBufferFilled.ImageOffset));
System.Drawing.Imaging.ColorPalette palette = bitmap.Palette;
int nColors = 256;
for (int ix = 0; ix < nColors; ix++)
{
    uint Alpha = 0xFF;
    uint Intensity = (uint)(ix * 0xFF / (nColors - 1));
    palette.Entries[ix] = System.Drawing.Color.FromArgb((int)Alpha, (int)Intensity, (int)Intensity, (int)Intensity);
}
bitmap.Palette = palette;
string filenameBMP = mBufferFilled.Parent.Parent.Model + "_ImageMono8_" + mBufferFilled.FrameID + "_time_" + mBufferFilled.Timestamp + ".bmp";
string filenameBMP2 = strPath;
//将Bitmap图像转为Image
#region//Copy the Bitmap to a new Bitmap instance and add it to the list of bitmaps(memory) 
Bitmap clone = (Bitmap)bitmap.Clone();
BitmapData data = clone.LockBits(new Rectangle(0, 0, clone.Width, clone.Height), ImageLockMode.ReadOnly, clone.PixelFormat);
clone.UnlockBits(data);
Image image = clone; // 隐式类型转换
SaveImageForSpecifiedQuality(image , savePath, 75);//设置75%质量的压缩
#endregion

第三步:微软Image图像压缩算法

下面为使用微软图像压缩算法的核心代码,如下所示:

/// <summary>
/// 按指定的压缩质量及格式保存图片(微软的Image.Save方法保存到图片压缩质量为75)
/// </summary>
/// <param name="sourceImage">要保存的图片的Image对象</param>
/// <param name="savePath">图片要保存的绝对路径</param>
/// <param name="imageQualityValue">图片要保存的压缩质量,该参数的值为1至100的整数,数值越大,保存质量越好</param>
/// <returns>保存成功,返回true;反之,返回false</returns>
public bool SaveImageForSpecifiedQuality(System.Drawing.Image sourceImage, string savePath, int imageQualityValue)
{
    //以下代码为保存图片时,设置压缩质量
    EncoderParameters encoderParameters = new EncoderParameters();
    EncoderParameter encoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, imageQualityValue);
    encoderParameters.Param[0] = encoderParameter;
    try
    {
        ImageCodecInfo[] ImageCodecInfoArray = ImageCodecInfo.GetImageEncoders();
        ImageCodecInfo jpegImageCodecInfo = null;
        for (int i = 0; i < ImageCodecInfoArray.Length; i++)
        {
            if (ImageCodecInfoArray[i].FormatDescription.Equals("JPEG"))
            {
                jpegImageCodecInfo = ImageCodecInfoArray[i];
                break;
            }
        }
        sourceImage.Save(savePath, jpegImageCodecInfo, encoderParameters);
        return true;
    }
    catch
    {
        return false;
    }
}

工业相机图像通过SDK使用微软图像压缩算法的优点

改善图像质量: 微软图像压缩算法可以通过减少图像噪音和提高对比度水平来显著提高图像质量。这导致了更准确和详细的图像。


更快的数据传输: 该算法可以在不牺牲速度的情况下压缩图像,确保更快的数据传输率。这使得图像的实时传输和分析成为可能,这对机器视觉和质量控制等应用至关重要。


降低带宽要求: 压缩后的图像需要较少的传输带宽,这使得它成为需要在有限的网络带宽上传输图像的工业相机的理想解决方案。


更好的存储效率: 压缩后的图像占用的存储空间更少,可以延长记录时间,降低存储成本。


与现有系统的兼容性: 微软的图像压缩算法与大多数工业相机的软件开发工具包(SDK)兼容,这意味着它可以很容易地集成到现有系统中,而不需要进行重大改变或升级。


广泛使用和支持: 作为一种广泛使用的压缩算法,它得到了很好的支持和记录,使之更容易找到资源、工具和熟悉该技术的开发人员。


工业相机图像通过SDK使用微软图像压缩的行业应用

通过SDK使用微软图像压缩算法的工业相机图像的行业应用是广泛的,可以包括:


工业自动化: 压缩后的图像可用于监测和控制各种工业流程,如自动装配线、质量控制检查和基于机器视觉的缺陷检测。


医学成像: 压缩图像可用于各种医疗成像应用,如诊断、放射学和远程医疗。


视频监控: 压缩后的图像可用于监测和监控应用,如交通监控和安全监控。


国防和航空航天: 压缩后的图像可用于各种国防和航天应用,如遥感、目标跟踪和图像识别。


交通运输: 压缩后的图像可用于各种交通应用,如交通监测、事故检测和车牌识别。


总的来说,通过SDK的微软图像压缩算法可以用于任何需要高质量图像压缩和容易实现图像处理应用的行业。

目录
相关文章
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
309 0
|
2月前
|
存储 监控 算法
电脑监控管理中的 C# 哈希表进程资源索引算法
哈希表凭借O(1)查询效率、动态增删性能及低内存开销,适配电脑监控系统对进程资源数据的实时索引需求。通过定制哈希函数与链地址法冲突解决,实现高效进程状态追踪与异常预警。
182 10
|
7月前
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
217 8
|
8月前
|
机器学习/深度学习 监控 算法
员工上网行为监控软件中基于滑动窗口的C#流量统计算法解析​
在数字化办公环境中,员工上网行为监控软件需要高效处理海量网络请求数据,同时实时识别异常行为(如高频访问非工作网站)。传统的时间序列统计方法因计算复杂度过高,难以满足低延迟需求。本文将介绍一种基于滑动窗口的C#统计算法,通过动态时间窗口管理,实现高效的行为模式分析与流量计数。
234 2
|
6月前
|
监控 算法 数据处理
内网实时监控中的 C# 算法探索:环形缓冲区在实时数据处理中的关键作用
本文探讨了环形缓冲区在内网实时监控中的应用,结合C#实现方案,分析其原理与优势。作为固定长度的循环队列,环形缓冲区通过FIFO机制高效处理高速数据流,具备O(1)时间复杂度的读写操作,降低延迟与内存开销。文章从设计逻辑、代码示例到实际适配效果展开讨论,并展望其与AI结合的潜力,为开发者提供参考。
292 2
|
6月前
|
监控 算法 安全
公司电脑监控软件关键技术探析:C# 环形缓冲区算法的理论与实践
环形缓冲区(Ring Buffer)是企业信息安全管理中电脑监控系统设计的核心数据结构,适用于高并发、高速率与短时有效的多源异构数据处理场景。其通过固定大小的连续内存空间实现闭环存储,具备内存优化、操作高效、数据时效管理和并发支持等优势。文章以C#语言为例,展示了线程安全的环形缓冲区实现,并结合URL访问记录监控应用场景,分析了其在流量削峰、关键数据保护和高性能处理中的适配性。该结构在日志捕获和事件缓冲中表现出色,对提升监控系统效能具有重要价值。
183 1
|
7月前
|
存储 监控 算法
局域网上网记录监控的 C# 基数树算法高效检索方案研究
在企业网络管理与信息安全领域,局域网上网记录监控是维护网络安全、规范网络行为的关键举措。随着企业网络数据量呈指数级增长,如何高效存储和检索上网记录数据成为亟待解决的核心问题。基数树(Trie 树)作为一种独特的数据结构,凭借其在字符串处理方面的卓越性能,为局域网上网记录监控提供了创新的解决方案。本文将深入剖析基数树算法的原理,并通过 C# 语言实现的代码示例,阐述其在局域网上网记录监控场景中的具体应用。
179 7
|
12月前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
205 0
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
1483 1

热门文章

最新文章