Mil学习之图片的ROI获取及半透膜掩膜效果着色

 

只对地球部分着色

用到Blob Buf Image几个部分

MIL_ID MImageSrc = 0;
MIL_ID MImageMask = 0;
MIL_ID MImageGray = 0;
ReadColorImage("C:\\Users\\kakie\\Desktop\\Image\\75.bmp", ref MImageSrc);
MIL.MbufClone(MImageSrc, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, ref MImageMask);

// 准备画布
if (MilImageTmp != 0)
    MIL.MbufFree(MilImageTmp);
if (showTmp != null) showTmp.MilFree();
int nW = (int)MIL.MbufInquire(MImageSrc, MIL.M_SIZE_X, MIL.M_NULL);
int nH = (int)MIL.MbufInquire(MImageSrc, MIL.M_SIZE_Y, MIL.M_NULL);
MIL.MbufAllocColor(MilSystem, 3, nW * 2, nH, 8 + MIL.M_UNSIGNED, MIL.M_PROC + MIL.M_IMAGE + MIL.M_DISP, ref MilImageTmp);
MIL.MbufAllocColor(MilSystem, 1, nW, nH, 8 + MIL.M_UNSIGNED, MIL.M_PROC + MIL.M_IMAGE + MIL.M_DISP, ref MImageGray);
showTmp = new MilGraphicShow(MilSystem, MilDisplayTmp, MilImageTmp, panel2);
showTmp.DispFit();

// 附上原图
MIL_ID MimgClild = 0;
MIL.MbufChild2d(MilImageTmp, 0, 0, nW, nH, ref MimgClild);
MIL.MbufCopy(MImageSrc, MimgClild);
MIL.MbufFree(MimgClild);

// 转黑白图处理  转后地球是黑色的
MIL.MimConvert(MImageSrc, MImageGray, MIL.M_RGB_TO_L);
MIL.MimBinarize(MImageGray, MImageGray, MIL.M_FIXED + MIL.M_LESS_OR_EQUAL, 50, MIL.M_NULL);

// Blob  Blob是处理不为0的部分 这里填充黑色区域中的白色孔洞
MIL_ID MilBlobCtx = MIL.M_NULL;
MIL_ID MilBlobResCtx = MIL.M_NULL;
MIL.MblobAllocFeatureList(MilSystem, ref MilBlobCtx);
MIL.MblobAllocResult(MilSystem, ref MilBlobResCtx);
MIL.MblobSelectFeature(MilBlobCtx, MIL.M_AREA);
MIL.MblobCalculate(MImageGray, MIL.M_NULL, MilBlobCtx, MilBlobResCtx);
MIL_INT nNum = 0;
MIL.MblobGetNumber(MilBlobResCtx, ref nNum);
double[] dRes = new double[nNum];
MIL.MblobGetResult(MilBlobResCtx, MIL.M_AREA, dRes);
double dMax = 0;
for (int i = 0; i < nNum; i++)
    if (dRes[i] > dMax)
        dMax = dRes[i];
MIL.MblobSelect(MilBlobResCtx, MIL.M_EXCLUDE, MIL.M_AREA, MIL.M_LESS, dMax, MIL.M_NULL);
MIL.MblobFill(MilBlobResCtx, MImageGray, MIL.M_EXCLUDED_BLOBS, 0);

// 反转图片 转后地球是白色的
MIL.MimBinarize(MImageGray, MImageGray, MIL.M_FIXED + MIL.M_LESS_OR_EQUAL, 50, MIL.M_NULL);
MIL.MblobCalculate(MImageGray, MIL.M_NULL, MilBlobCtx, MilBlobResCtx);
nNum = 0;
MIL.MblobGetNumber(MilBlobResCtx, ref nNum);
dRes = new double[nNum];
MIL.MblobGetResult(MilBlobResCtx, MIL.M_AREA, dRes);
dMax = 0;
for (int i = 0; i < nNum; i++)
    if (dRes[i] > dMax)
        dMax = dRes[i];
MIL.MblobSelect(MilBlobResCtx, MIL.M_EXCLUDE, MIL.M_AREA, MIL.M_LESS, dMax, MIL.M_NULL);
MIL.MblobFill(MilBlobResCtx, MImageGray, MIL.M_EXCLUDED_BLOBS, 0);
MIL.MblobFree(MilBlobResCtx);
MIL.MblobFree(MilBlobCtx);

// 给 Mask 着色
MIL.MbufClear(MImageMask, MIL.M_COLOR_RED);
MIL.MbufChildColor(MImageMask, MIL.M_RED, ref MimgClild);
MIL.MimArith(MimgClild, MImageGray, MimgClild, MIL.M_AND);
MIL.MbufFree(MimgClild);
MIL.MbufChildColor(MImageMask, MIL.M_GREEN, ref MimgClild);
MIL.MimArith(MimgClild, MImageGray, MimgClild, MIL.M_AND);
MIL.MbufFree(MimgClild);
MIL.MbufChildColor(MImageMask, MIL.M_BLUE, ref MimgClild);
MIL.MimArith(MimgClild, MImageGray, MimgClild, MIL.M_AND);
MIL.MbufFree(MimgClild);
MIL.MbufChild2d(MilImageTmp, nW, 0, nW, nH, ref MimgClild);
int Alpha = 100;
MIL.MimArithMultiple(MImageSrc, 256 - Alpha, MImageMask, Alpha, 256, MimgClild, MIL.M_MULTIPLY_ACCUMULATE_2, MIL.M_DEFAULT);
MIL.MbufFree(MimgClild);

 

半监督学习中的tsvm算法(Trans Support Vector Machines)和弱监督学习中的MIL算法(Multiple Instance Learning)都是在标注数据有限的情况下进行学习的方法,但它们的目标和应用场景有所不同。 tsvm算法是一种半监督学习算法,它利用了未标记数据来提高分类器的性能。tsvm算法的主要思想是将未标记数据视为一种特殊类型的噪声,通过在支持向量机(SVM)框架下对未标记数据进行分类,从而提高分类器的泛化能力。tsvm算法通过最大化边界区域来优化分类器,使得未标记数据尽可能地远离分类边界。 MIL算法是一种弱监督学习算法,它适用于标注数据中存在不完全标注或者只有实例级别标注的情况。MIL算法的主要思想是将训练样本看作是袋(bag)和实例(instance)的组合,其中一个袋中可能包含多个实例,袋的标签由其中至少一个实例的标签决定。MIL算法通过对袋进行建模和学习,从而得到一个能够对新袋进行分类的模型。 异同点: 1. 目标:tsvm算法旨在利用未标记数据提高分类器的性能,而MIL算法旨在处理存在不完全标注或实例级别标注的数据。 2. 数据表示:tsvm算法将未标记数据视为噪声,通过最大化边界区域来优化分类器;MIL算法将训练样本看作是袋和实例的组合,通过对袋进行建模和学习来进行分类。 3. 应用场景:tsvm算法适用于标注数据有限但未标记数据丰富的情况,MIL算法适用于存在不完全标注或实例级别标注的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值