图形处理之抽取轮廓

使用vtkVoxelContoursToSurfaceFilter由平行轮廓重建三角面片 在医学影像中,由于CT、MRI等成像设备的数据均以断层影像的形式输出,对其进行轮廓提取和三维重建就成为一个常见的需求。 将一组相互平行的轮廓线,以三角面片连接,形成放样曲面,即为surface from contours问题。这一问题的经典解决方法可参见论文Piecewise-Linear Interpolation between Polygonal Slices(简单贪心) 及approx 阅读详情

等值面(线)

        抽取轮廓的操作对象是标量数据。其思想是:将数据集中标量值等于某一指定恒量值的部分提取出来。对于3D的数据集而言,产生的是一个等值面;对于2D的数据集而言,产生的是一个等值线。其典型的应用有气象图中的等温线、地形图中的等高线。对于医学数据而言,不同的标量值代表的是人体的不同部分,因而可以分别提取出人的皮肤或骨头。
  抽取轮廓的功能是由一个过滤器实现的,如vtkContourFilter 。vtkContourFilter 可以接受任意数据集类型作为输入,因而具有 一般性。使用vtkContourFilter 时,除了需要设置输入数据集外,还需要指定一个或多个用于抽取的标量值。可用如下两种方法进行设置。

  1. 使用方法SetValue()逐个设置抽取值。该方法有个两个参数:第一个参数是抽取值的索引号,表示第几个 抽取值。索引号从0开始计数;第二个参数就是指定的抽取值。
  2. 使用方法GenerateValues()自动产生一系列抽取值。该方法有三个参数:第一个参数是抽取值的个数,后面两个参数是抽取值的取值范围。例如:
vtkSmartPointer<vtkContourFilter> contours = vtkSmartPointer<vtkContourFilter>::New();
contours->GenerateValues(5.0, 0.0, 1.2);

最终产生的抽取值为0.0, 0.3, 0.6, 0.9和1.0,这是一个等差数列。

vtkContourFilter生成等值线示例

CMakeLists.txt文件代码如下:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(Contour)
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(Contour	Contour.cpp)
TARGET_LINK_LIBRARIES(Contour ${VTK_LIBRARIES})

Contour.cpp文件代码如下:

#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCellArray.h>
#include <vtkFloatArray.h>
#include <vtkPointData.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkLookupTable.h>
#include <vtkContourFilter.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>

int main()
{
	int i;
	//定义网格的顶点坐标
	vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
	//第1行5个点
	points->InsertNextPoint(-2.0, 2.0, 0.0);
	points->InsertNextPoint(-1.0, 2.0, 0.0);
	points->InsertNextPoint(0.0, 2.0, 0.0);
	points->InsertNextPoint(1.0, 2.0, 0.0);
	points->InsertNextPoint(2.0, 2.0, 0.0);
	//第2行5个点
	points->InsertNextPoint(-2.0, 1.0, 0.0);
	points->InsertNextPoint(-1.0, 1.0, 0.0);
	points->InsertNextPoint(0.0, 1.0, 0.0);
	points->InsertNextPoint(1.0, 1.0, 0.0);
	points->InsertNextPoint(2.0, 1.0, 0.0);
	//第3行5个点
	points->InsertNextPoint(-2.0, 0.0, 0.0);
	points->InsertNextPoint(-1.0, 0.0, 0.0);
	points->InsertNextPoint(0.0, 0.0, 0.0);
	points->InsertNextPoint(1.0, 0.0, 0.0);
	points->InsertNextPoint(2.0, 0.0, 0.0);
	//第4行5个点
	points->InsertNextPoint(-2.0, -1.0, 0.0);
	points->InsertNextPoint(-1.0, -1.0, 0.0);
	points->InsertNextPoint(0.0, -1.0, 0.0);
	points->InsertNextPoint(1.0, -1.0, 0.0);
	points->InsertNextPoint(2.0, -1.0, 0.0);
	//第5行5个点
	points->InsertNextPoint(-2.0, -2.0, 0.0);
	points->InsertNextPoint(-1.0, -2.0, 0.0);
	points->InsertNextPoint(0.0, -2.0, 0.0);
	points->InsertNextPoint(1.0, -2.0, 0.0);
	points->InsertNextPoint(2.0, -2.0, 0.0);

	//定义单元,每个顶点建立一个四边形单元,共计个单元
	static vtkIdType pts[16][4] = { { 0, 5, 6, 1 }, { 1, 6, 7, 2 }, { 2, 7, 8, 3 },
	{ 3, 8, 9, 4 }, { 5, 10, 11, 6 }, { 6, 11, 12, 7 }, { 7, 12, 13, 8 }, { 8, 13, 14, 9 },
	{ 10, 15, 16, 11 }, { 11, 16, 17, 12 }, { 12, 17, 18, 13 }, { 13, 18, 19, 14 },
	{ 15, 20, 21, 16 }, { 16, 21, 22, 17 }, { 17, 22, 23, 18 }, { 18, 23, 24, 19 } };

	//创建对象
	vtkSmartPointer<vtkPolyData> pGrid = vtkSmartPointer<vtkPolyData>::New();
	vtkSmartPointer<vtkCellArray> polys = vtkSmartPointer<vtkCellArray>::New();
	for (i = 0; i < 16; i++)
	{
		polys->InsertNextCell(4, pts[i]);
	}
	vtkSmartPointer<vtkFloatArray> scalars = vtkSmartPointer<vtkFloatArray>::New();
	//第1行
	scalars->InsertTuple1(0, 0);
	scalars->InsertTuple1(1, 1);
	scalars->InsertTuple1(2, 1);
	scalars->InsertTuple1(3, 3);
	scalars->InsertTuple1(4, 2);
	//第2行
	scalars->InsertTuple1(5, 1);
	scalars->InsertTuple1(6, 3);
	scalars->InsertTuple1(7, 6);
	scalars->InsertTuple1(8, 6);
	scalars->InsertTuple1(9, 3);
	//第3行
	scalars->InsertTuple1(10, 3);
	scalars->InsertTuple1(11, 7);
	scalars->InsertTuple1(12, 9);
	scalars->InsertTuple1(13, 7);
	scalars->InsertTuple1(14, 3);
	//第4行
	scalars->InsertTuple1(15, 2);
	scalars->InsertTuple1(16, 7);
	scalars->InsertTuple1(17, 8);
	scalars->InsertTuple1(18, 6);
	scalars->InsertTuple1(19, 2);
	//第5行
	scalars->InsertTuple1(20, 1);
	scalars->InsertTuple1(21, 2);
	scalars->InsertTuple1(22, 3);
	scalars->InsertTuple1(23, 4);
	scalars->InsertTuple1(24, 3);

	pGrid->SetPoints(points);
	pGrid->SetPolys(polys);
	pGrid->GetPointData()->SetScalars(scalars);

	//定义颜色映射表
	vtkSmartPointer<vtkLookupTable> pColorTable = vtkSmartPointer<vtkLookupTable>::New();
	pColorTable->SetHueRange(0.667, 0.887);
	pColorTable->SetNumberOfColors(255);
	pColorTable->Build();

	vtkSmartPointer<vtkPolyDataMapper> cubeMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	cubeMapper->SetInputData(pGrid);
	cubeMapper->SetScalarRange(0, 9);
	cubeMapper->SetLookupTable(pColorTable);
	vtkSmartPointer<vtkActor> cubeActor = vtkSmartPointer<vtkActor>::New();
	cubeActor->SetMapper(cubeMapper);

	//提取轮廓线
	vtkSmartPointer<vtkContourFilter> pContourFilter = vtkSmartPointer<vtkContourFilter>::New();
	pContourFilter->SetValue(0, 5.0);
	pContourFilter->SetInputData(pGrid);
	pContourFilter->Update();

	vtkSmartPointer<vtkPolyDataMapper> pContourMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
	pContourMapper->SetInputData(pContourFilter->GetOutput());

	pContourMapper->ScalarVisibilityOff();
	vtkSmartPointer<vtkActor> pContourActor = vtkSmartPointer<vtkActor>::New();
	pContourActor->SetMapper(pContourMapper);
	pContourActor->GetProperty()->SetColor(1.0, 1.0, 0.0);
	pContourActor->GetProperty()->SetLineWidth(5.0);

	vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
	renderer->AddActor(pContourActor);
	renderer->AddActor(cubeActor);
	renderer->SetBackground(1.0, 1.0, 1.0);

	vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
	renWin->SetSize(300, 300);
	renWin->AddRenderer(renderer);
	renWin->SetWindowName("vtkContourFilter");

	vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	interactor->SetRenderWindow(renWin);

	interactor->Initialize();
	interactor->Start();
}

运行结果

这里写图片描述

示例原理

  1. 定义规则网格数据顶点的属性值,示例中设置标量值。
  2. 确定提取区域的属性值。
  3. 用提取区域的属性值和每个网格数据的每个单元进行比对,确定其是否在该单元内,如果在该单元内,要用插值的方法确定其和该单元边界的交点,然后继续比对下一个单元,如果不在该单元内,继续比对下一个单元。
  4. 将各个单元的交点相连成线,即为边界区域。
    ##原理示意图:
    这里写图片描述
VTK笔记-裁剪分割-几何裁剪-vtkClipPolyData 什么是裁剪分割 VTK加载二维数据和三维数据,我们通常观察到的是三视图图像,或者是vtkImageReslice获取到的转换矩阵对应的观察点三视图或者是斜平面图像,想要看到图像中间部分的渲染结果就要借助“手术刀”工具对图像数据进行分割裁剪,去掉不重要数据,将重要的脏器或者病灶暴露出来; 与抽取轮廓类似,裁剪也是指获取数据集中的部分数据。不过裁剪是从一个完全不同的角度来处理的。裁剪可以控制数据获取的区域,而抽取轮廓做不到这一点。 裁剪操作需要的一把“刀”——隐函数,用来完成切割的操作,并且要指定裁剪的位置—— 阅读详情

相关推荐

VTK修炼之道56:图形基本操作进阶_表面重建技术(三维点云曲面重建)

1.点云重建 虽然Delaunay三角剖分算法可以实现网格曲面重建,但是其应用主要在二维剖分,在三维空间网格生成中遇到了问题。因为在三维点云曲面重建中,Delaunay条件不在满足,不仅基于最大最小角判断的对角线交换准则不在成立,而且基于外接圆判据的Delaunay三角化也不能保证网格质量。 VTKSurfaceReconstructionFilter则实现了一种隐式曲面重建方法,即将

沈春旭的博客 1万+

VTK——自定义三维裁剪Widget,恢复Widget(任意形状,圆形,矩形裁剪)vtkCustomPaintWidget

vtk自定义裁剪widget

weixin_38293453的博客 1352

18、基于分层抽样的分区聚类初始化模型

本文提出了一种基于分层抽样的分区聚类初始化模型,旨在解决大数据环境下传统聚类算法在数据分类和计算效率方面的局限性。通过将异构数据集划分为同质层,并利用分层抽样确定初始质心,该模型显著提升了聚类的准确性和收敛速度。实验结果表明,与传统K-Means算法相比,该模型在轮廓系数和DB指数等评估指标上表现更优,同时减少了CPU时间和迭代次数。该方法在客户细分、医疗数据分析和图像识别等多个实际场景中具有广泛应用前景。未来研究将聚焦于样本大小优化、多算法融合及实时数据处理方向。

alpha的博客 77

VTK 三角剖分 Delaunay2D(七)—— 选择切割区域

VTK 三角剖分 Delaunay2D(七)—— 选择切割区域 引言 通过设置vtkClipPolyData的函数SetGenerateClippedOutput(true)控制显示切割后保留的部分。false默认值保留inside区域,true保留outside区域。 代码 vtkSmartPointer<vtkPolyLine> PolyLine = vtkSmartPointe...

GIS探索之路 1921

F1.46 视频编码原理

运动估计技术一般将当前的输入图像分割成若干彼此不相重叠的小图像子块,例如一帧图像的大小为1280×720,首先将其以网格状的形式分成40×45个尺寸为16×16的彼此没有重叠的图像块,然后在前一图像或者后一个图像某个搜索窗口的范围内为每一个图像块寻找一个与之最为相似的图像块。这样在编码过程中就可以将当前图像中的块与参考图像运动矢量所指向的最相似的图像块相减,得到一个残差图像块,由于残差图像块中的每个像素值很小,所以在压缩编码中可以获得更高的压缩比。视频图像数据有极强的相关性,也就是说有大量的冗余信息。

福优学苑@音视频+流媒体 147

【数字图像相关-OpenCorr学习笔记】Epipolar search原理+代码解析

OpenCorr是一个开源C++库,用于研究和开发数字图像相关(DIC)技术它提供了2D和立体声DIC的全功能模块,以及数字体积相关(DVC)。最近正在学习OpenCorr,为了更深层次地理解ICGN,我打算浅浅剖析Opencorr的代码,学习的过程中写下这篇学习笔记,以后忘记了还能回来看看。同时,作为一名在读研究生,希望能得到社区大佬的指点,以及跟同学们一起学习进步。这一期主要讲解Eipipolar search的原理,并且附上部分代码解析。

ywyywyy的博客 1358

三维空间图像轮廓 c语言,三维模型轮廓线抽取算法.doc

三维模型轮廓线抽取算法第 6 卷 (A 版) 第 2 期2001 年 2 月中国图象图形学报Jo u rn a l o f Im age an d G rap h ic sV o l. 6 (A ) , N o. 2F eb. 2001三维模型轮廓线抽取算法吴亚东刘玉树( 北京理工大学计算机科学工程系, 北京 100081)摘 要 虽然三维模型的轮廓线在图形交流中起着重要的作用, 但...

weixin_32899685的博客 493

eNSP-抓包解析TCP三次握手和四次挥手的过程

一、环境搭建 1.设备连接 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果

小橙子的博客 3353

VTK图形处理之剪切

剪切  与抽取轮廓类似,剪切(Cut)也是指获取数据集中的部分数据。不过剪切是从一个完全不同的角度来处理的。剪切可以控制数据获取的区域,而抽取轮廓做不到这一点。   剪切操作需要一把”刀“——隐函数,并且要指剪切的位置——剪切值。给定了这两个参数后,就确定了切面——隐函数对应的函数曲面。剪切的处理过程是首先将数据集中的点坐标带入隐函数中进行计算,然后将算出的函数值等于剪切值的部分(包括属性数据)取

阿兵-AI医疗的专栏 4967

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4231

window下移动设备/硬盘报错位置不可用

移动硬盘指示灯亮,但电脑上不显示 报错信息 : 无法访问E:\。参数错误。 报错原因: 移动硬盘打不开提示参数错误,是因为这个H盘的文件系统内部结构损坏导致的。要怎么恢复里面的数据呢? https://jingyan.baidu.com/article/cb5d6105a80242005c2fe0c3.html 解决办法 : 不用格式化修复方法 方法一: 1、单击–开始–运行–输入cmd; 2、...

qq_40907977的博客 4928

探索Pathway:构建下一代Android图形的钥匙

探索Pathway:构建下一代Android图形的钥匙 在数字创意与界面设计日益复杂的今天,我们常常寻求那些能够将设计理念无缝转化为生动交互工具的技术。而其中,Pathway——一个专为Android平台打造的创新库,正以其独特魅力,为我们打开了新的设计大门。 项目简介 Pathway是一个专门针对Android开发的库,它扩展了原生Path API的功能,赋予开发者前所未有的图形处理能力。从AP...

gitblog_00788的博客 822

MATLAB并行开不了的解决办法

在服务器上新安装了MATLAB 2013b,在开并行计算的时候出现了下列问题 经过在网上搜多这个问题,我感觉这个问题应该是安装的时候的验证问题或者激活不成功之类的。注意其中有一句validate the profile ‘local’ in the Cluster Profile Manager.在matlab官网上找到了设置Cluster Manager的教程,如下 parallel>

sinat_36713319的博客 5987

【数码概念验证码识别系统教程】(五)图形滤镜说明

数码概念验证码识别系统为用户提供了十大类三十多个图形处理滤镜,涉及了图形处理的方方面面,功能强大而使用方便,搞清楚这些滤镜的作用对于验证码识别十分重要。以下按类别分别对这些滤镜进行说明。一、图形缩放这个类别只有一个滤镜,就是图形缩放滤镜,这个滤镜的作用是对验证码图形进行缩放操作。虽说是缩放,但实际上只有缩小图形的功能。这是考虑到对验证码图形进行放大没有意义而设置的。这个滤镜主要用于某些尺寸过大的验证码图形。验证码图形太大,制作字模库很费劲,识别时所需时间太长,适当的缩小验证码图形,可以大大提高识别的速度。二

wangyeh的专栏 2583

spark3.x 写入hudi报错

【代码】spark3.x 写入hudi报错。

W2484980893的博客 1578

25、压电泵致动器变形计算与测量及转弯腔射流特性的有限元分析

本文围绕压电泵致动器的变形计算与测量以及转弯腔射流特性的有限元分析展开研究。通过建立有限元模型和抛物线拟合方法,对压电泵致动器的位移和变形体积进行了详细计算,并探讨了其对传感器性能的影响。同时,利用ANSYS软件对转弯腔在不同角速率输入下的射流特性进行了仿真分析,揭示了流场分布随角速率变化的规律。研究成果为压电流体角速率传感器的设计优化提供了理论依据和技术支持。

ooo22的博客 125

计算机图像图形处理知识点,数字图像处理知识点汇总.doc

数字图像处理知识点汇总1. 什么是数字图像处理,就是利用数字计算机或其他高速、大规模集成数字硬件,对从图像信息转换来的数字电信号进行某些数字运算或处理,以期提高图像的质量或达到人们所要求的某些预期的结果。 2.图像的表示方法:2(90o)3(135o)1(45o) 4(180o) 0(0o)5(225o)).6(270o)7(315o不等长码3. 图像数字化的过程包括两个方面:采样和量化。i. 图...

weixin_35411487的博客 389

第一节:Vben Admin介绍和初次运行

本文是【实战Vben Admin + Python】的第一节,本文内容主要是介绍Vben Admin框架和我们后端使用的技术,开发环境和工具的准备本节文章的目的是Vben Admin的简单介绍,通过配置可以让项目前端运行起来,由于项目默认开启了mock,展示的都是静态模拟数据,我们在此基础上,下一节将研究分析下Vben Admin的目录。为我们后端搭建准备。

cuiwin的专栏 7416

自考多媒体计算机技术,2019自考本科07167多媒体计算机技术.doc

多媒体计算机技术试卷 第 PAGE 14 页 共 NUMPAGES 15 页一、单项选择题1.光盘属于 BA.感觉媒体B.存储媒体C.显示媒体D. 传输媒体2.下面有关图形的描述中,错误的是 DA.在图形文件中记录生成图的算法 B.图形只保存算法和特征点 C.通过计算显示图形D.图形放大后容易失真3.决定立体视觉的是 AA.视差B.形状C.轮廓D.颜色4.光存储系统的驱动器引导...

weixin_30567751的博客 521

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++实现高性能验证码系统:从图形生成到会话管理的完整实践

验证码作为网络安全的基础防线,其核心原理在于通过人机交互挑战来区分真实用户与自动化程序。从技术实现角度看,它融合了图形处理、随机算法和会话状态管理等多个底层模块。在C++高性能开发场景中,自行实现验证码系统能带来显著的技术价值:一方面,通过内存级操作避免了网络延迟,满足游戏登录、金融交易等高并发场景的极致性能需求;另一方面,完全自主的代码实现确保了数据隐私和系统可控性,允许开发者根据业务需求灵活定制字符集、干扰样式和验证逻辑。本文以C++17标准库结合stb_image_write等轻量级图形库,详细演示了

weixin_30781107的博客 325

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算的原理和计算技术简史:图形学与计算机视觉 2

1.背景介绍 计算机图形学和计算机视觉是计算机科学领域的两个重要分支。图形学主要关注计算机生成和处理图像和3D模型的方法,而计算机视觉则关注计算机从图像中抽取和理解信息的方法。这两个领域的发展历程紧密相连,共同推动了计算机图形学和计算机视觉技术的不断进步。 图形学的起源可以追溯到1960年代,当时的计算机图形学研究主要集中在2D图形的绘制和处理上。随着计算机硬件和软件技术的不断发展,计算机图形...

AI天才研究院 602

低采样率ISAR成像的稀疏重建方法及其实时实现

逆合成孔径雷达成像是一种面向飞机、舰船、卫星等运动目标的高分辨率雷达成像技术。它利用目标与雷达之间的相对运动形成等效合成孔径,从而获得目标在距离方向和方位方向上的二维散射图像。

ZSW1218的博客 307

图像处理与计算机视觉--第一章--计算机视觉简介--重要知识点总结

图像处理与计算机视觉--第一章--计算机视觉简介--重要知识点总结

m0_71819746的博客 1115

【深度学习】(一)概述

深度学习是机器学习的一个子集,其核心是构建具有多个“隐藏层”的人工神经网络。它的灵感来源于人脑神经元的工作方式,但并非严格模拟生物神经机制。核心思想:通过“端到端”的学习方式,让模型自动从原始数据中逐层提取特征。浅层网络学习边缘、颜色等简单特征,深层网络则将这些简单特征组合成轮廓、部件乃至语义等复杂抽象概念。这一过程被称为“特征学习”或“表示学习”。发展关键数据:互联网时代积累的海量数据(图像、文本、语音)。算力:GPU(图形处理器)、TPU(张量处理器)等高性能计算硬件的普及。算法。

2503_91504671的博客 633

数字图像处理

图像处理的基础知识 数字图像处理简介 什么是数字图像处理 数字图像处理是通过计算机对图像进行处理的理论、方法、技术 什么是图像? ​ 图像是一个二维函数????(????,????),其中,????,????是空间坐标,????(????,????)是点(????,????)的幅值。 ​ 灰度图像是一个二维灰度(或亮度)函数????(????,????) ​ 彩色图像由三个(如????????????,????????????)二维灰度(或亮度)函数????(????,????)组成 ​

苏轼说电脑真好玩 659

计算机技术在农机上的应用,计算机视觉技术在农机自动化上的应用与优势分析.pdf...

文档介绍:万方数据计算机视觉技术在农机自动化上的应用与优势分析农机使修年第期董美荣拖嘏┐寤祷裰行模诹农业机械的自动化是农机技术发展的必经之路,近年来在传统农机技术的基础上,农业机械的自动化程度得到了显著的提升,为很多新功能的研发与实施奠定了基础。将计算机视觉技术与现代化的农机自动化技术进行结合,有利于进一步提升农业机械的自动化和智能化程度,使农业机械更好地代替人力进行生产劳动。随着相关研究的深入,...

weixin_30658827的博客 289
上一篇: 体绘制之体绘制管线
下一篇: VTK图像处理之vtkImageReslice
暮-成-雪
博客等级 码龄12年 5328粉丝 319原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值