MIL从入门到放弃
前情回顾
上节我们讲了MIL的安装、初始化声明、图片加载显示,显示效果如下图:
今天我们来进一步说明一下MIL如何将图片显示在Form里,并对图片进行预处理效果显示。
一、将图片显示在Form窗体里
代码如下(示例):
MIL.MdispSelectWindow(MilDisp,MilImage,panel1.Handle);//参数一:显示ID,参数二:图像ID,参数三:图片显示控件句柄
二、对图片进行二值化处理
1.MimBinarize的使用
代码如下(示例):
MIL_ID BinImage = 0;
MIL.MbufAllocColor(MilSys, 1, nSizeX, nSizeY, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_DISP + MIL.M_PROC, ref BinImage);//声明二值化图像ID,单通道
MIL.MimBinarize(MilImage, BinImage, MIL.M_FIXED + MIL.M_GREATER, 128, MIL.M_NULL); 超过128灰度值的区域设置成255
二值化前:
二值化后:
2.整体代码
代码如下(示例):
using Matrox.MatroxImagingLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace VISION
{
public partial class Form1 : Form
{
MIL_ID MilApp = 0;
MIL_ID MilSys = 0;
MIL_ID MilDisp = 0;
MIL_ID MilGraContext = 0;
MIL_ID MilGraList = 0;
MIL_ID MilImage = 0;
int nSizeX = 512;
int nSizeY = 512;
public Form1()
{
InitializeComponent();
InitialMil();
}
private void InitialMil()
{
MIL.MappAllocDefault(MIL.M_DEFAULT, ref MilApp, ref MilSys, ref MilDisp, MIL.M_NULL, MIL.M_NULL);
MIL.MgraAlloc(MilSys, ref MilGraContext);
MIL.MgraAllocList(MilSys, MIL.M_DEFAULT, ref MilGraList);
MIL.MdispControl(MilDisp, MIL.M_ASSOCIATED_GRAPHIC_LIST_ID, MilGraList);
MIL.MbufAllocColor(MilSys, 3, nSizeX, nSizeY, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_DISP + MIL.M_PROC, ref MilImage);
MIL.MbufLoad("E:\\Lena.bmp", MilImage);
MIL.MdispSelect(MilDisp,MilImage);
MIL.MdispSelectWindow(MilDisp,MilImage,panel1.Handle);
MIL_ID BinImage = 0;
MIL.MbufAllocColor(MilSys, 1, nSizeX, nSizeY, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_DISP + MIL.M_PROC, ref BinImage);
MIL.MimBinarize(MilImage, BinImage, MIL.M_FIXED + MIL.M_GREATER, 128, MIL.M_NULL); //超过128灰度值的区域设置成1 小于128的设置为0
MIL.MimBinarize(MilImage, BinImage, MIL.M_FIXED + MIL.M_LESS, 128, MIL.M_NULL); //超过128灰度值的区域设置成0,小于128的设置成1 M_IN_RANGE
MIL.MimBinarize(MilImage, BinImage, MIL.M_FIXED + MIL.M_IN_RANGE, 100, 128); //超过100灰度值的区域小于128的区域设置成1 ,其他区域设置为0
MIL.MdispSelectWindow(MilDisp, BinImage, panel1.Handle);
}
}
}
三种二值化效果图如下:
MIL.M_GREATER 效果如下(示例):
MIL.M_LESS效果如下(示例):
MIL.M_IN_RANGE效果如下(示例):
总结
对图像进行预处理前可声明一个预设好的图像区域,将处理后的图片存放在此区域。
另外图像二值化有诸多模式,可从MIL Help中继续深入。恭喜你,你离放弃更近一步了!