摘要:
基于序列图像的三维体绘的视线投射算法(Ray Casting)一.体绘算法步骤1.体数据的生成:将序列图像的象素数据部分剥离出来(如果是JPG等压缩类型的数据,还需要先解压缩),按照相对的上下层之间的关系,将其存到一内存区中,保存的原则比较简单,即能够根据象素的三维坐标最快的检索到体素的值(此处的象素值可以是灰度值、颜色值或者CT值等)。2.设置材质的显示属性:某象素属于何种材质,归根到底还是由象素值来确定,所以在设置材质的时候必须首先设定材质的受用象素值的范围,即该材质的值的上限和下限,进而设定材质的色泽、透明度、镜面反射系数、漫反射系数等其他显示属性。3.设置光照属性:设置光源的数目,并设 阅读全文
摘要:
问题最近学习C++碰到这样一个问题,while(cin>>s){},这样的一个语句用什么样的输入能够结束运行,到网上一查,大家给出的答案是ctrl+z,可以使该程序结束。但是,对于ctrl+z的作用和ctrl+z的实质是什么却都没有深刻的剖析。于是,翻书找到了些内容,认为自己解决了这个问题。现将学习到的内容记录如下。首先,先了解一下,究竟能是一个输入流停止工作的有哪些条件。流的状态流有正常的状态和错误的状态。流只有在正常的状态下,才能够正常的工作。输入流在正常的工作状态下,才能够执行读的操作。ctrl+z,的作用其实就是让流从正常的工作状态,转为不工作的其实也可以说是错误的工作状态 阅读全文
摘要:
字符串可以用字符数组与字符串变量两种方式来存储,效果类似。一、用字符数组来存储字符串: char st1[100],st2[100] ; //字符数组说明cin>>st1>>st2;long a,b;输入:hello, world则st1={‘h’,’e’,’l’,’l’,’o’,’,’,’\0’}st2={‘w’,’o’,’r’,’l’,’d’,’\0}字符’\0’为字符串结束标志1. 字符数组长度 strlen(st1); //如a=strlen(st1);b=strlen(st2); 则a=6,b=52. 字符数组比较 不能直接比较,st1>st2是错误的, 阅读全文
摘要:
/*两个函数虽然看上去名称相同都是getline,但它们却分属于不同的类中的成员函数。cin.getline(a,20)的getline是输入流对象的成员函数,即istream::getline,使用时需头文件#include <iostream>getline(cin,s)的getline是string类对象的成员函数,即string::getline,使用时需头文件#include <string>第二个string类的getline函数,如果是在VC6.0下编译的,则必须敲两次回车string类的getline(cin,s);中第一个参数要求是一个输入流对象的引用 阅读全文
摘要:
如何配置DirectX开发环境作者:zdd来源:博客园发布时间:2009-11-04 09:46阅读:602 次原文链接 [收藏]一个DirectX程序要想正确的编译和链接,需要下面三个主要前提一 安装DirectX SDK二 正确配置.h文件路径和.lib文件路径三 正确链接所需.lib文件详细步骤如下:安装DirectX SDK配置.h文件和.lib文件路径1. 启动VS,依次选择tools-option-projects and solutions-VC++Directories,在show directories for下面有几个选项2. 选择Include files, 这个是Dir 阅读全文
摘要:
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include <vector>vector属于std命名域的,因此需要通过命名限定,如下完成你的代码:using std::vector;vector<int> vInts;或者连在一起,使用全名:std::vector<int> vInt 阅读全文
摘要:
人们有时好像喜欢故意使C++语言的术语难以理解。比如说new操作符(new operator)和operator new的区别。 当你写这样的代码:string *ps = new string("Memory Management"); 你使用的new是new操作符。这个操作符就象sizeof一样是语言内置的,你不能改变它的含义,它的功能总是一样的。它要完成的功能分成两部分。第一部分是分配足够的内存以便容纳所需类型的对象。第二部分是它调用构造函数初始化内存中的对象。new操作符总是做这两件事情,你不能以任何方式改变它的行为。 你所能改变的是如何为对象分配内存。new操作符 阅读全文
摘要:
解决的主要问题是灰度图究竟在计算机中是怎么表示的。在讨论该问题之前,要知道这样一个事情。即显示器究竟是怎么没成像的,是有rgb三个通道,在三个通道中我们根据每个rgb的值,操纵硬件,点亮屏幕。因此,无论是什么图,如果要到显示出来这一步,一定要有一组rgb的值。所以要明确的一点是最终灰度还是要表示成rgb的形式进行存储。如0%的灰度RGB数值是255,255,255;1%灰度的RGB数值是253,253,253;2%灰度RGB值为250,250,250。而将一副彩色图转换成为一副灰度图。实质就是通过从 RGB 到 YUV 空间的 Y 转换公式为: Y = 0.299R+0.587G+0.114B 阅读全文
摘要:
图像处理中,大部分的处理方法都需要事先把彩色图转换成灰度图才能进行相关的计算、识别。彩色图转换灰度图的原理如下:我们知道彩色位图是由R/G/B三个分量组成,其文件存储格式为BITMAPFILEHEADER+BITMAPINFOHEADER,紧跟后面的可能是:如果是24位真彩图,则每个点是由三个字节分别表示R/G/B,所以这里直接跟着图像的色彩信息;如果是8位(256色),4位(16色),1位(单色)图,则紧跟后面的是调色板数据,一个RGBQUAD类型的数组,其长度由BITMAPINFOHEADER.biClrUsed来决定。然后后面紧跟的才是图像数据(24位图是真实的图像数据,其他的则是调色板 阅读全文
摘要:
讲到绘画、图像,自然离不开谈颜色,所有的图案都是由基本形状和颜色组成,颜色构成了我们图像处理的一个重要部分,下面我们将要了解颜色的原理,它将是我们美工的基础。 (一) 三基色原理 在中学的物理课中我们可能做过棱镜的试验,白光通过棱镜后被分解成多种颜色逐渐过渡的色谱,颜色依次为红、橙、黄、绿、青、蓝、紫,这就是可见光谱。其中人眼对红、绿、蓝最为敏感,人的眼睛就像一个三色接收器的体系,大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生。同样绝大多数单色光也可以分解成红绿蓝三种色光。这是色度学的最基本原理,即三基色原理。三种基色是相互独立的,任何一种基色都不能有其它两种颜色合成。红绿蓝是三基色 阅读全文