C++ opencv计算图像的水平投影,并返回一幅图像

102 篇文章 30 订阅
48 篇文章 7 订阅

效果图

输入图像

在这里插入图片描述

输出图像

在这里插入图片描述

代码

//计算图像的水平投影,并返回一幅图像
cv::Mat getVerProjImage(const cv::Mat &image)
{
	cv::Mat matTmp = image.clone();
	int maxCol = 0, maxNum = 0;//重置255最大数目和最大行
	int minCol = 0, minNum = matTmp.rows;//重置255最小数目和最小行
	int height = matTmp.rows, width = matTmp.cols;//图像的高和宽
	int tmp = 0;//保存当前行的255数目
	int *projArray = new int[width];//保存每一行255数目的数组

	cv::namedWindow("matTmp", 0);
	cv::imshow("matTmp", matTmp);

	//循环访问图像数据,查找每一行的255点的数目
	for (int col = 0; col < width; ++col)
	{
		tmp = 0;
		for (int row = 0; row < height; ++row)
		{
			if (matTmp.at<uchar>(row, col) == 255)/*白色像素*/
			{
				++tmp;
			}
		}
		projArray[col] = tmp;
		if (tmp > maxNum)
		{
			maxNum = tmp;
			maxCol = col;
		}
		if (tmp < minNum)
		{
			minNum = tmp;
			minCol = col;
		}
	}
	//创建并绘制垂直投影图像
	cv::Mat projImg(height, width, CV_8U, cv::Scalar(255));

	for (int col = 0; col < width; ++col)
	{
		cv::line(projImg, cv::Point(col, height - projArray[col]), cv::Point(col, height - 1), cv::Scalar::all(0));
	}

	delete[] projArray;//删除new数组
	return  projImg;
}

使用示例:

	Mat VerProjImage;

	//计算图像的水平投影,并返回一幅图像
	VerProjImage = getVerProjImage(image_part);

参考:
https://blog.csdn.net/sjhuangx/article/details/50100451

医学图像三维重建是通过计算机图形学、数字图像处理技术、计算机可视化以及人机交互等技术,把二维的医学图像序列转换为三维图像在屏幕上显示出来,并根据需要为用户提供交互处理手段的理论、方法和技术。图像分割是进行图像三维重建的必要准备,图像分割效果的优劣直接影响三维重建在医学领域的应用。医学图像分割和三维重建将数字图像处理技术和计算机图形学应用在了在生物医学工程中,该应用涉及到计算机图形学、图像处理技术、生物医学工程等多种技术,该领域的研究多学科交叉的,在医学诊断、手术规划及医学教学等方面有很高的应用价值,是近年来的计算机应用技术的一个研究热点。医学图像分割与三维重建是两个不可分割的相关领域。本文研究了基于区域的图像分割和基于边缘的两种图像分割方法在医学图像处理中的应用,并在实验中利用ITK提供的区域生长法成功分割出肝脏、脊柱和肺脏等人体组织器官;三维重建算法分为两类:面绘制和直接体绘制。面绘制从三维体数据中抽取目标对象等值面,通过传统的图形学方法进行渲染;体绘制技术则将整个体数据进行可视化显示,使医生可以通过设置适当的参数调节后观察医学数据的三维内部结构信息。本文研究了光线投射体绘制算法、错切变形法和基于纹理映射的体绘制算法,以及Marching Cubes面绘制算法的实现机制和适用范围,并利用VTK提供的三维重建算法对不同人体部位的组织和器官实现了重建实验。本文主要研究了医学图像分割与三维重建技术的应用。在对医学图像分割和三维重建基础理论以及三维重建相关的三维切割技术进行研究和实验的基础上,结合医学图像分割开发工具包ITK(Insight ToolKit)和可视化开发包VTK(Vislual ToolKit),以及ActiveX开发技术,设计了一个医学图像三维重建VolumeRenderX控件并通过MFC编程实现。这是一个面向对象、可扩展的跨IDE(Intergreted Development Enviroment)开发平台的开发控件,并针对实际应用需求整合了重建参数调节和重建体剖切等多种实用功能,相对于传统的医学图像处理与三维重建系统具有更大的应用价值。本文还提出了一个基于WEB模式的医学图像三维重建的解决方案。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翟羽嚄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值