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:\Users\kakie\Desktop\black.bmp";
      private const string IMAGE1_FILE = @"C:\Users\kakie\Desktop\white.bmp";
      private const string IMAGE2_FILE = @"C:\Users\kakie\Desktop\okBlack.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:\Users\kakie\Desktop\test.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);
         }
      }
   }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值