opencv对两灰度图像相减

Jangle_ 2017-06-06 10:31:51
本人最近接触对医学图像搭建神经网络的问题,因为之前未涉及过图像处理,所以对opencv完全不懂,现在需要对两灰度图像相减,可是直接用opencv相减效果很差(把一张带有血管的CT图片减去只有头骨的CT图片,得到只剩血管的灰度图片)。具体图片如下:





不清楚为什么相减后像是成了二进制图片了??opencv小白,请大神们给点意见!
...全文
3327 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
相减为负值了,自动转正接近255
PantaQl 2018-11-26
  • 打赏
  • 举报
回复
应该是 threshold(result,result,10,255,0);这一句的原因,这一句的作用是将图像进行二值化,所以将这句注释掉或者去掉就可以了
沐阳2100 2017-06-07
  • 打赏
  • 举报
回复
沐阳2100 2017-06-07
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include "opencv2/opencv.hpp"

using namespace std;
using namespace  cv;


int _tmain(int argc, _TCHAR* argv[])
{
	namedWindow("src1");
	namedWindow("src2");
	namedWindow("result");
	/*
	加载时转成加载灰度图
	*/
	Mat src1 = imread(".\\1.bmp",0);
	Mat src2 = imread(".\\2.bmp",0);
	Mat ssrc1,ssrc2,result;
	/*
	注: 我是在博主这截图的 所以需调整图片大小到一致
	*/
	resize(src1, ssrc1, Size(700, 600), 0, 0, CV_INTER_LINEAR);
	resize(src2, ssrc2, Size(700, 600), 0, 0, CV_INTER_LINEAR);

	imshow("src1",ssrc1);
	imshow("src2",ssrc2);

	//subtract(ssrc1, ssrc2, result);
	absdiff(ssrc1, ssrc2, result);
	/*
	1-- 不进行阈值化得到的就是灰度图 不是二值图像
	2-- 但两幅图像相减确实得不到只剩血管的图像,可能两幅图像除了血管还是存在差异吧
	*/
	threshold(result,result,10,255,0);
	
	imshow("result",result);

	if (waitKey(-1) == 27)
	{
		//break;
	}
	return 0;
}

1,451

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 图象工具使用
社区管理员
  • 图象工具使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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