我是靠谱客的博主 俭朴烧鹅,最近开发中收集的这篇文章主要介绍Mil学习之 MimFlatField 多相机图像均一性校正,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        适用于多个相机的场景,此时多个相机拍图的均一性是有一定差异的,我们可以使用Mil的模块进行一定的补偿校正。

        Mim模块的M_FLAT_FIELD_CONTEXT属性。

需要校正相机的暗图

需要校正相机的暗图

需要校正相机的亮图 

需要校正相机的亮图

标准相机的暗图 

需要校正的输入图片 

需要校正的输出图片

// This code was generated by MIL CoPilot 10.40.881
// on Thursday, June 24, 2021
// Compiling and running generated code will require :
// MIL 10 with Service Pack 4

using System;
using System.Text;
using Matrox.MatroxImagingLibrary;

namespace MilCoPilot_Untitled
   {
   class Program
      {
      private const string IMAGE_FILE = @"C:UserskakieDesktopblack.bmp";
      private const string IMAGE1_FILE = @"C:UserskakieDesktopwhite.bmp";
      private const string IMAGE2_FILE = @"C:UserskakieDesktopokBlack.bmp";

      static void Main(string[] args)
         {
         MIL_ID MilApplication = MIL.M_NULL;
         MIL_ID MilSystem = MIL.M_NULL;
         MIL_ID ProcessingContext = MIL.M_NULL;
         MIL_ID black = MIL.M_NULL;
         MIL_ID white = MIL.M_NULL;
         MIL_ID okBlack = MIL.M_NULL;
         MIL_ID ImageTest = MIL.M_NULL;
         MIL_ID MimFlatFielddestination = MIL.M_NULL;

         MIL.MappAlloc(MIL.M_NULL, MIL.M_DEFAULT, ref MilApplication);
         MIL.MsysAlloc(MIL.M_DEFAULT, "M_SYSTEM_HOST", MIL.M_DEFAULT, MIL.M_DEFAULT, ref MilSystem);
         MIL.MbufImport(IMAGE_FILE, MIL.M_DEFAULT, MIL.M_RESTORE + MIL.M_NO_GRAB + MIL.M_NO_COMPRESS, MilSystem, ref black);
         MIL.MbufImport(IMAGE1_FILE, MIL.M_DEFAULT, MIL.M_RESTORE + MIL.M_NO_GRAB + MIL.M_NO_COMPRESS, MilSystem, ref white);
         MIL.MbufImport(IMAGE2_FILE, MIL.M_DEFAULT, MIL.M_RESTORE + MIL.M_NO_GRAB + MIL.M_NO_COMPRESS, MilSystem, ref okBlack);

         MIL.MbufRestore(@"C:UserskakieDesktoptest.bmp", MilSystem, ref ImageTest);
         MIL.MbufClone(ImageTest, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, ref MimFlatFielddestination);
         MIL.MimAlloc(MilSystem, MIL.M_FLAT_FIELD_CONTEXT, MIL.M_DEFAULT, ref ProcessingContext);

         // Control Block for Processing Context
         MIL.MimControl(ProcessingContext, MIL.M_DARK_IMAGE, black);
         MIL.MimControl(ProcessingContext, MIL.M_FLAT_IMAGE, white);
         MIL.MimControl(ProcessingContext, MIL.M_OFFSET_IMAGE, okBlack);
         MIL.MimControl(ProcessingContext, MIL.M_GAIN_CONST, 255.0);

         MIL.MimFlatField(ProcessingContext, MIL.M_NULL, MIL.M_NULL, MIL.M_PREPROCESS);
         MIL.MimFlatField(ProcessingContext, ImageTest, MimFlatFielddestination, MIL.M_DEFAULT);

         Console.WriteLine("Press <ENTER> to continue");
         Console.ReadKey();

         MIL.MbufFree(MimFlatFielddestination);
         MIL.MbufFree(ImageTest);
         MIL.MimFree(ProcessingContext);
         MIL.MbufFree(okBlack);
         MIL.MbufFree(white);
         MIL.MbufFree(black);
         MIL.MsysFree(MilSystem);
         MIL.MappFree(MilApplication);
         }
      }
   }

最后

以上就是俭朴烧鹅为你收集整理的Mil学习之 MimFlatField 多相机图像均一性校正的全部内容,希望文章能够帮你解决Mil学习之 MimFlatField 多相机图像均一性校正所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部