1.找出下面2张图的不同处

  

//先加载2张图像到内存中

var background = new Bitmap( "left.bmp");

backgroundImg.Source = ToBitmapImage(background);

var original = new Bitmap( "right.bmp");

originalImg.Source = ToBitmapImage(original);

//产生mask, 不同的地方为白色,相同的为黑色

var threld = new ThresholdedEuclideanDifference(37);

threld.OverlayImage = background;

var result = threld.Apply(original);

result.Save( "1-difference.bmp");

//上面的ThresholdedEuclideanDifference 是AForge.Imaging.Filters命名空间的, 先利用欧几里德计算两张图像的不同处, 然后再计算图像的阈值

//http://www.aforgenet.com/framework/docs/html/59cd04f1-6824-e27b-2c68-c446b29bcb31.htm

//根据上述的黑白图,我们可以制作一张mask图,即把找出的不同处抠出来,也就是把图中白色手机保留下来。

//当然为了效果,我们需要先把最大的白色手机保留下来,其余的去除掉。

var blobsFilter = new BlobsFiltering(30, 30, 500, 500, true);

result = blobsFilter.Apply(result);

result.Save( "2-blobs_difference.bmp" );

//mask(掩码)算法一般是需要保留的为黑色,其他去除的为白色,也就是说我们需要把上面的结果反色。

var invertFilter = new Invert();

result = invertFilter.Apply(result);

result.Save( "3-invert_difference.bmp" );

//根据mask算法,由mask图和原图一起得出不相同的图像

//因为Aforge的MaskFilter必须传递filter,就用了MergeFilter,让上面的结果和纯白图像merge,merge Filter的算法是以两张图像的pixel的最大值为最终值, 即和白色(255,255,255)merge是不影响上述的结果图像。

//然后Mask本身再把merge结果和原图进行掩码处理

//根据mask和基色(白色)去抠出不相同的地方

var color = System.Drawing.Color .White;

var baseBmp = new Bitmap(original.Width, original.Height, original.PixelFormat);

for (int i = 0; i < baseBmp.Width; i++)

{

for (int j = 0; j < baseBmp.Height; j++)

{

baseBmp.SetPixel(i, j, color);

}

}

baseBmp.Save( "4-mask_base.bmp");

var filter = new MaskedFilter( new Merge (baseBmp) , result);

result = filter.Apply(original);

result.Save( "5-merge_mask_base.bmp");

//ok,通过上述几个算法我们终于把想要的不相同的图像抠出来了。 如果图像不相同的区域可以预估, 然后我们再加一个透明度的mask, 就可以去除更多不需要的图像了。

//根据实现预估的区域进行二次掩码处理

var maskAreaBmp = new Bitmap( "mask_area.bmp");

mask = new MaskedFilter (new Merge(baseWhiteBmp), maskAreaBmp);

result = mask.Apply(result);

result.Save( "6-second_mask.bmp");

//通过上述多种算法组合,我们可以抠出满足我们要求的不相同处的图像了。 接下来就是把找出来的图像和新背景图融合在一起即可。

//融合算法需要考虑实际的两张图的像素, 不是简单的各点像素值的相加或者取最大值。

//此次demo中是继承Aforge.Net中的BaseInPlaceFilter2 , 然后重写ProcessFilter方法。

//因为上面的大部分是白色区域不想要, 因此基本的合成算法是如果overlay的pixel是白色则用原图的pixel

利用Aforge Net实现两张图的查找不同处、抠图、合成图相关推荐

  1. 如何在JAVA编程语言程序开发中更好的利用数据库中2两张表?

    数据库中2两张表 一张user表,一张pay表 department的外键在user表中做主键 则:用eclipse的自动翻转工具生成的配置文件如下 <?xml version="1. ...

  2. word表格分开快捷键_Word利用快捷键在两张以上无缝表格之间或表格前插入文字...

    在制作 Word 文档过程中,偶尔会遇到这样一种情况,就是要在两张或多张无缝表格之间插入文字,由于输入文字前必须插入光标,恰恰在无缝表格之间不容易插入光标,应该怎么办呢?毫无疑问把表格分离,至于如何分 ...

  3. Excel快速核对两张表格

    在工作中,经常会遇到核对两张表格看是否完全一致,如图中的表1和表2.利用Excel的高级筛选.条件格式.VLOOKUP函数,快速实现两个表格的核对,简单.高效.准确. 1.运用高级筛选核对两张表格 s ...

  4. 手把手教你用Python替代Mapinfo更快查找两张表中距离最近的点

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 嫦娥应悔偷灵药,碧海青天夜夜心. ...

  5. 图片找茬游戏——使用OpenCV查找两张图像的不同处并标记

    前言 有个小游戏,就是给出两张只有轻微的几处差异的图像,让大家来找出图像中的不同之处,之前曾经玩过,发现游戏明明告诉你有几处不同,但你什么也找不全,比如下面的几组图像,这几组图像每组都有三个不同的地方 ...

  6. opencv resize_利用OpenCV 识别两张相似的图片

    Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...

  7. opencv 取roi_利用OpenCV 识别两张相似的图片

    Background: 在我们项目中,用到U-net,我们对训练样本图片使用labelme进行标定,对标定生成的json文件labelme_json_to_dataset生成标注图像,由于小伙伴将生成 ...

  8. 用两张图告诉你,为什么你的App会卡顿?

    有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? 知道Android究竟是如何在屏幕上显示我们期望的画面的? 对Android的视图架构有整体把握. 学会 ...

  9. HighNewTech之5G网络:带你了解5G网络的前世今生—两张长图帮你捋清思路

    High&NewTech之5G网络:带你了解5G网络的前世今生-两张长图帮你捋清思路 目录 5G简介 第一张图理解5G 第二张图理解5G 技术原理 主要功能 发展前景 5G简介 5G网络是第五 ...

  10. opencv 叠加两张图_「干货」教你如何用OpenCV快速寻找图像差异处

    如何使用结构相似性指数(SSIM)将两个图像与Python进行比较. 使用这种方法,我们能够轻松确定两个图像是否相同或由于轻微的图像处理,压缩伪像或有目的的篡改而产生差异. 今天我们将扩展SSIM方法 ...

最新文章

  1. LeetCode简单题之两句话中的不常见单词
  2. There's no Qt version assigned to this project for platform Win32/Win64
  3. Linux串口原理与编程
  4. 人工智能赋能智慧停车 准确预订车位
  5. php函数find的用法,c语言find函数的用法详解
  6. android(安卓)手机 markdown不错的编辑器
  7. 具有多个Join和选定列的示例LINQ
  8. 线性表的顺序存储结构和链式存储结构的比较
  9. 64位linux nvidia 32位,NVIDIA英伟达显卡驱动下载
  10. c语言编写2阶booth算法,关于Booth算法的C语言实现
  11. CSS animation 属性
  12. Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册
  13. 戴维斯分校 计算机硕士,加州大学戴维斯分校计算机研究生录取条件是什么?
  14. 查找攻击者ip的方法
  15. 高能所客座用户计算机申请,2020年中科院高能所招收联合培养硕士博士生、客座研究生多名...
  16. c++中显示“无法打开xxx.exe进行写入”
  17. 第39次Scrum会议(12/5)【欢迎来怼】
  18. 理解目标检测中的老大难:小目标检测
  19. 2022年危险化学品经营单位安全管理人员操作证考试题模拟考试平台操作
  20. 计算机系男生生的都是女儿吗,IT男只能生女孩,生男孩几率很小吗?

热门文章

  1. 教你如何在Protel中显示标题栏内容
  2. Mybatis之select元素
  3. hsqldb mysql_启动hsqldb数据库
  4. Eucalyptus使用注意事项
  5. mysql注入扫描网站漏洞工具_网站安全检测,高手必备几款SQL注入工具
  6. Type-c与micro usb 的对应关系
  7. STC单片机 Keil4安装, 第一个程序
  8. 软件项目管理作业汇总
  9. python爬取有妖气漫画
  10. 408计算机及格要什么水平,2019考研计算机408难度水平?