如何用VC++6.0的MFC做图像找不同?

XinkaiZed 2014-10-15 07:27:15
大三GIS菜狗一只,老师给的课题是用VC的MFC找出两张相近图片的不同处,在MFC的视图中展示两张图片并标记处不同的地方。因为图像是栅格图像,对于点要素还是好找的,线要素我想用边缘检测算法提取线,然后再做处理,面要素应该也比较好找。
大体思路我有了,原图是两张png格式的图片,因为VC对图片的处理能力比较差,所以我下载了GDI+,加入到我的库里面,但是发现还是用不了CImage类,于是我就两张png图片转成两张bmp格式的图片,想通过对位图的操作来继续进行。
我的思路如下:
(1)通过位图操作获得两张图片的像素点的颜色矩阵
(2)比较每一个像素点的颜色,一样返回0,不一样返回1,得到一个矩阵(因为原始图像是比较严格的工程数据,不用担心会有杂色什么的),得到所有为1的值的像素点的坐标,存在一个动态数组中。
(3)通过一定的算法,将(2)中得到的坐标进行区域融合,比如说老图中某处有一个房子,而新图中没有,那么差异不可能只是一个像素点,而是一系列位置相近的像素点。一群位置相近的像素点的集合成为一个要素,点、线、面要素是通过不同的算法来进行区域融合的。
(4)计算出每一个要素的中心点,以这个中心店为圆心画圆,也就是把这个不同的地方标记出来。

我想难点在于(3)中的区域融合算法

只是我才开始使用MFC,对位图的操作不太熟悉,如何得到位图的像素点的颜色矩阵并且存放在一个二维数组Color cl[][]中,想询问一下这里的大牛们,谢谢!!!
...全文
177 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2014-10-16
  • 打赏
  • 举报
回复
“所以我下载了GDI+,加入到我的库里面,但是发现还是用不了CImage类,” 有 GDI+ 就不要 CImage 了。
relaxisland 2014-10-16
  • 打赏
  • 举报
回复
你是gdi+, 不是微软的gdiplus吗 装了VS,应该就有了啊 用里面的bitmap类,就可以得到图像的内容了, 得到的是一维数组, 你自己可根据每行长度,来模拟成二维数组访问的。 百度搜索gdi+ bitmap应该就有例子吧
ojc520520 2014-10-16
  • 打赏
  • 举报
回复
有意思,往上顶;
lgstudyvc 2014-10-16
  • 打赏
  • 举报
回复
你的思路对头,和我当初做图像拼接类似
精分患者 2014-10-16
  • 打赏
  • 举报
回复
直接读取BMP图片!!你看一下BMP图片头,接着根据位深计算出每一个像素点的RGB值,最后就变成数学问题了
caozoe 2014-10-16
  • 打赏
  • 举报
回复
有意思。等思路
赵4老师 2014-10-16
  • 打赏
  • 举报
回复
《学习OpenCV(中文版)》

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧