导航:首页 > 源码编译 > 伪彩色算法

伪彩色算法

发布时间:2022-11-15 03:10:01

① 显卡的结构及工作原理

显卡的结构和工作原理

显卡是目前大家最为关注的电脑配件之一了,他的性能好坏直接关系到显示性能的好坏及图像表现力的优劣等等。然而许多初学者对显卡这个东西并不是十分了解的,下面笔者搜集了一批资料并以图解的形式对显卡结构做一简单的介绍,希望你看后能对显卡有一定的了解。
显卡的基本结构
显卡的主要部件包括:显示芯片,显示内存,RAMDAC等。
显示芯片:一般来说显卡上最大的芯片就是显示芯片,显示芯片的质量高低直接决定了显示卡的优劣,作为处理数据的核心部件,显示芯片可以说是显示卡上的CPU,一般的显示卡大多采用单芯片设计,而专业显卡则往往采用多个显示芯片。由于3D浪潮席卷全球,很多厂家已经开始在非专业显卡上采用多芯片的制造技术,以求全面提高显卡速度和档次。
显示内存:与系统主内存一样,显示内存同样也是用来进行数据存放的,不过储存的只是图像数据而已,我们都知道主内存容量越大,存储数据速度就越快,整机性能就越高。同样道理,显存的大小也直接决定了显卡的整体性能,显存容量越大,分辨率就越高。
一:结构--全面了解显示卡(一)
一.图解显示卡。
1.线路板。
显卡的线路板是显卡的母体,显卡上的所有元器件必须以此为生。目前显卡的线路板一般采用的是6层PCB线路板或4层PCB线路板,如果再薄,那么这款显卡的性能及稳定性将大打折扣。另外,大家可看见显卡的下面有一组“金手指”(显示卡接口),它有ISA/PCI/AGP等规范,它是用来将显卡插入主板上的显卡插槽内的。当然,为了让显卡和主机更好的固定,显卡上需要有一块固定片;为了让显卡和显示器及电视等输入输出设备相连,各种信号输出输入接口也是必不可少的。

2.显卡上常见的元器件。
现在的显卡随着技术上的进步,其采用的元器件是越来越少越来越小巧。下面我们给大家介绍几种显卡上常见的元器件。
a.主芯片:主芯片是显示卡的灵魂。可以说采用何种主显示芯片便决定了这款显示卡性能上的高低。目前常见的显卡主芯片主要有nVidia系列及ATI系列等等,如Geforce2 GTS,Geforce2 MX,Geforce3,ATI Radeon等。此外,由于现在的显卡频率越来越高工作时发热量也越来越大,许多厂家在显卡出厂家已给其加上了一个散热风扇。
b.显存:显存也是必不可少的。现在的显卡一般采用的是SDRAM,SGRAM,DDR三种类别的显存,以前常见的EDO等类别的显存已趋淘汰。它们的差别是--SGRAM显存芯片四面皆有焊脚,SDRAM显存只有两边有焊脚,而DDR显存除了芯片表面标记和前两者不同外,那就是芯片厚度要比前两者明显薄。
c.电容电阻:电容电阻是组成显卡不能或缺的东西。显卡采用的常见的电容类型有电解电容,钽电容等等,前者发热量较大,特别是一些伪劣电解电容更是如此,它们对显卡性能影响较大,故许多名牌显卡纷纷抛弃直立的电解电容,而采用小巧的钽电容来获得性能上的提升。电阻也是如此,以前常见的金属膜电阻碳膜电阻越来越多的让位于贴片电阻。
d.供电电路:供电电路是将来自主板的电流调整后供显卡更稳定的工作。由于显示芯片越造越精密,也给显卡的供电电路提出了更高的要求,在供电电路中各种优良的稳压电路元器件采用是少不了的。
e.FLASH ROM:存放显卡BIOS文件的地方。
f.其它:除此之外,显卡上还有向显卡内部提供数/模转换时钟频率的晶振等小元器件。
全面了解显示卡

PCB板
PCB板是一块显卡的基础,所有的元件都要集成在PCB板上,所以PCB板也影响着显卡的质量。目前显卡主要采用黄色和绿色PCB板,而蓝色、黑色、红色等也有出现,虽然颜色并不影响性能,但它们在一定程度上会影响到显卡出厂检验时的误差率。另外,目前不少显卡采用4层板设计,而一些做工精良的大厂产品多采用了6层PCB板,抗干扰性能要好很多。PCB板的好坏直接影响显示的稳定性。
显示芯片
我们在显示卡上见到的“个头”最大的芯片就是显示芯片,它们往往被散热片和风扇遮住本来面目,显示芯片专门负责图像处理。常见的家用型显卡一般都带有一枚显示芯片,但也有多芯片并行处理的显卡,比如ATI RAGE MAXX和大名鼎鼎的3dfx Voodoo5系列显卡。
显示芯片按照功能来说主要分为“2D”(如S3 64v+)“3D”(如3dfx Voodoo)和"2D+3D"(如Geforce MX)几种,目前流行的主要是2D+3D的显示芯片。
位(bit指的是显示芯片支持的显存数据宽度,较大的带宽可以使芯片在一个周期内传送更多的信息,从而提高显卡的性能。现在流行的显示芯片多位128位和256位,也有一小部分64位芯片显卡。“位”是显示芯片性能的一项重要指标,但我们并不能按照数字倍数简单判定速度差异。
显示内存
显存也是显卡的重要组成部分,而且显存质量、速度、带宽等的重要性已经越来越明显。显存是用来存储等待处理的图形数据信息的,分辨率越高,屏幕上显示的像素点也越多,相应所需显存容量也较大。而对于目前的3D加速卡来说,则需要更多的显存来存储Z-Buffer数据或材质数据等。
我们知道,在显卡工作中,显示芯片将所处理的图形数据信息传送到显存中,随后RAMDAC从显存中读取数据并将数字信号转化为模拟信号,输出到显示器上。所以,显存的速度及数据传输带宽直接影响了显卡的速度。数据传输带宽是指显存一个周期内可以读入的数据量影响显卡的速度。显存容量决定了显卡支持的分辨率、色深,而刷新率由RAMDAC决定。
显存可以分为两大类:单端口显存和双端口显存。前者从显示芯片读取数据及向RAMDAC传输数据经过同一端口,数据的读写和传输无法同时进行;顾名思义,双端口显存则可以同时进行数据的读写与传输。目前主要流行的显存有SDRAM、SGRAM、DDR RAM、VRAM、WRAM等。
RAMDAC(数/模转换器)
RAMDAC作用是将显存中的数字信号转换成显示器能够识别的模拟信号,速度用“MHz”表示,速度越快,图像越稳定,它决定了显卡能够支持的最高刷新频率。我们通常在显卡上见不到RAMDAC模块,那是因为厂商将RAMDAC整合到显示芯片中以降低成本,不过仍有部分高档显卡采用了独立的RAMDAC芯片。
VGA BIOS
VGA BIOS存在于Flash ROM中,包含了显示芯片和驱动程序间的控制程序、产品标识等信息。我们常见的Flsah ROM编号有29、39(见图1)和49开头的3种,这几种芯片都可以通过专用程序进行升级,改善显卡性能,甚至可以给显卡带来改头换面的效果。

图1 VGA BIOS
VGA功能插针
VGA功能插针(见图2)是显卡与外部视频设备交换数据的通道,通常用于扩展显卡的视频功能,比如连接解压卡等,虽然它存在于很多显卡当中,但利用率非常低。

图2 VGA插针
VGA 插座(D-SUB)
VGA插座一般为15针RGB接口(见图3),某些书籍及报刊称之为D-SUB接口。显卡与显示器之间的连接需要VGA插座来完成,它负责向显示器输出图像信号。在一般显卡上都带有一个VGA插座,但也有部分显卡同时带有两个VGA插座,使一块显示卡可以同时连接两台显示器,比如MGA G400DH和双头GeForce MX。

图3 VGA插座
另外,部分显卡还同时带有视频输入(Video in)、输出(Video out)端子(见图4)、S端子(见图5)或数字DVI接口(见图6)。视频输出端口和S端子的出现使得显卡可以将图像信号传输到大屏幕彩电中,获取更佳的视觉效果。数字DVI接口用于连接LCD,这需要显示芯片的支持。具有这些接口的显卡通常也可以称为双头显卡,双头显卡一般需要单独的视频控制芯片。现在市场上有售的耕升的GeForce2 ULT显卡同时拥有DVI接口和S-Video接口,是少见的全能产品。
工作原理

我们必须了解,资料 (data) 一旦离开 CPU,必须通过 4 个 步骤,最后才会到达显示屏:
1、从总线 (bus) 进入显卡芯片 -将 CPU 送来的资料送到显卡芯片里面进行处理。 (数位资料)
2、从 video chipset 进入 video RAM-将芯片处理完的资料送到显存。 (数位资料)
3、从显存进入 Digital Analog Converter (= RAM DAC),由显示显存读取出资料再送到 RAM DAC 进 行资料转换的工作(数位转类比)。 (数位资料)
4、从 DAC 进入显示器 (Monitor)-将转换完的类比资料送到显示屏 (类比资料)
如同你所看到的,除了最后一步,每一步都是关键,并且对整体的显示效能 (graphic performance) 关系十分重大。
注: 显示效能是系统效能的一部份,其效能的高低由以上四步所决定,它与显示卡的效能 (video performance) 不太一样,如要严格区分,显示卡的效能应该受中间两步所决定,因为这两步的资料传输都是在显示卡的内部。第一步是由 CPU 进入到显示卡里面,最后一步是由显示卡直接送资料到显示屏上,这点要了解。
最慢的步骤就是整体速度的决定步骤 (注: 例如四人一组参加 400 公尺接力,其中有一人跑的特别慢,全组的成绩会因它个人而被拖垮,也许会殿后。但是如果他埋头苦练,或许全队可以得第一,所以跑的最慢的人是影响全队成绩的关键,而不是哪些已经跑的很快的人)。
现在让我们来看看每一步所代表的意义及实际所发生的事情:
CPU 和显卡芯片之间的资料传输
这受总线的种类和总线的速度(也就是外频),主机板和他的芯片组所决定。 目前最快的总线是 PCI bus,而 VL bus, ISA, EISA and NuBus (Macs 专用) 效能就比较低。
现在流行的AGP并不是一种总线,而只是一种接口方式(注: PCI bus 是 32 bit data path,也就是说 CPU 跟 显示卡之间是以一次 4 byte 的资料在对传,其他的 bus 应该是 16 bit data path)。
PCI bus 的最快速度是 33 MHz 。
显卡芯片和显存之间的资料传输以及从显存到 RAM DAC 的资料传输
我把这两步放在一起是因为这里是影响显示卡效能的关键所在, 假如你不考虑显卡芯片的个别差异。
显示卡的最大的问题就是,可怜的显存夹在这两个非常忙碌的装置之间 (显卡芯片和 RAMDAC),必须随时受它们两个差遣。
每一次当显示屏画面改变,芯片就必须更改显示显存里面的资料 (这动作是连续进行的,例如移动鼠标游标,键盘游标......等等)。 同样的,RAM DAC 也必须不断地读取显存上的资料,以维持画 面的刷新。 你可以看到,显存在他们之间被捉的牢牢的。
所以后来出现了一些聪明的做法,像是使用 VRAM, WRAM, MDRAM, SGRAM, EDO RAM, 或增加 video bus 的大小如 32 bit, 64bit, 还有现在刚出现的 128 bit。
分辨率越高,从芯片传到显存的资料就越多。 而 RAM DAC 从显存读取资料的速度就要更快才行。 你可以看到,芯片和和RAM DAC 随时都在对显存 进行存取的工作。
一般 DRAM 的速度只能被存取到一个最大值(如 70ns 或 60ns),所以 在芯片结束了存取 (read/write) 显存之后, 才能换 RAM DAC 去读取显存,如此一直反复不断。
显卡的主要术语与参数

一.明白显卡的常见术语。
了解了显卡的外表,最后让我们再来了解一下显卡的流行术语,这样对你认识显卡更有由表及里的帮助作用。
1.AGP:(ACCELERATED GRAPHICS PORT图形加速端口)AGP实际上是PCI接口的超集,它做为一种新型接口将显示卡同主板芯片组进行了直接连接,从而大幅度提高了电脑对3D图形的处理能力。在处理大的纹理图形时AGP显卡除了使用卡上的显存外还可以通过DIME直接内存执行功能使用系统内存,AGP显卡视频传输率在X2模式下就可达到533MB/S。
*AGP8X:AGP8X是Intel制定的新一代的图像传输规格,它将作为下一代的个人电脑及工作站的新显示标准。AGP (Accelerated Graphics Port)是由Intel公司所制订的显示接口标准,速度已由最初的AGP 1x (264 MBytes/sec,3.3v)到现在的AGP 4x (1 GBytes/sec,1.5v),因为AGP拥有高速频宽,所以广受众多显示芯片厂家的支持,推出了很多支持AGP 4X/PRO的不同产品来以满足用户对图像运算、高画质要求的要求。Intel宣布的AGP 8x,依旧使用32-bit的总线架构,而速度方面则提升至533 MHz,及支持2GBytes/sec,是AGP 4x的两倍。速度的提升,即代表了显示芯片制造商能更好的利用AGP 8x的优点来充份发挥显示芯片的效能。
2.API。
API全称为(Application Programming Interface)应用程序接口。
API的原理是当某一个应用程序提出一个制图请求时,这个请求首先要被送到操作系统中,然后通过GDI(图形设备接口)和DCI(显示控制接口)对所要使用的函数进行选择。而现在这些工作基本由Direct X来进行,它远远超过DCI的控制功能,而且还加入了3D图形API(应用程序接口)和Direct3D。显卡驱动程序判断有那些函数是可以被显卡芯片集运算,可以进行的将被送到显卡进行加速。如果某些函数无法被芯片进行运算,这些工作就交给CPU进行(影响系统速度)。运算后的数字信号写入帧缓存中,最后送入RAMDAC,在转换为模拟信号后输出到显示器。由于API是存在于3D程序和3D显示卡之间的接口,它使软件运行在硬件之上,为了使用3D加速功能,就必须使用显示卡支持的API来编写程序,比如Glide, Direct3D或OpenGL等等来获得性能上的提升。
常见的API主要有以下几种:
*.Direct X。
说起显卡我们不得不说说它。这是微软公司专为PC游戏开发的API(应用程序接口),它的主要特点是:比较容易控制,可令显卡发挥不同的功能,并与WINDOWS系统有良好的兼容性。
*.OpenGL。
OpenGL开放式图形界面是由SG公司开发用于WINDOWS,MACOS,UNIX等系统上的API。它除了提供有许多图行运算处理功能外,其3D图形功能很强,甚至超过Direct X很多。
*.Glide。
这是3DFX公司首先在VOODOO系列显卡上应用的专用3D API,它可以最大限度的发挥VOODOO显示芯片的3D图形处理能力。由于它很少考虑兼容性,所以工作效率要比OpenGL和D3D要高。
3.RAMDAC。
RAMDAC(RANDOM ACCESS MEMORY DAC,数模转换芯片)它的作用是将电脑内的数字信号代码转换为显示器所用的模拟信号的东西。此芯片决定显示器所表现出的分辨率及图像显示速度。RAM DAC根据其寄存器的位数分为8位,16位,24位等等,8位RAMRAC只能显示256色,而真彩卡支持的16M色,它的RAMRAC必须为24位。另外,RAM DAC的工作速度越高,则相应的显示速度也越快,如在75Hz的刷新率和1280X1024的分辨率下RAM DAC的速度至少要达到150MHz。
4.显存。
显存,显示存储器,其作用是以数字形式存储图行图像资料。通过专门的图形处理芯片可直接从卡上的显存调用有关图形图像资料,从而减轻了CPU的负担缩短了通过总线传输的时间,提高了显示速度,可以说显存的大小与速度直接影响到视频系统的图形分辨率,色彩精度和显示速度。常见的显存和当时主流的内存使用情况基本相同
显示卡(Display Card),也叫显卡,是电脑最基本组成部分之一。显卡控制着PC的脸面——显示器,使它能够呈现供我们观看的字符和图形画面。早期的显卡只是单纯意义的显卡,只起到信号转换的作用;目前我们一般使用的显卡都带有图形加速功能,所以也叫做“图形加速卡”。本期我们将为大家介绍有关显示卡的知识。
显示卡通常由总线接口、PCB板、显示芯片、显存、RAMDAC、VGA BIOS、VGA功能插针、VGA插座及其他外围元件构成
主要参数

CGA (COlor Gaphics Adapter:彩色图形适配卡〕
IBM公司于1982年开发并推出了一种可支持彩色显示器的显示即CGA卡,它能够显示16种颜色,可达到640X200的分辨率,可工作于文本和图形方式下。
EGA (Enhanced Graphics Adapter:增强图形适配卡)
在CGA的基础上IBM公司于1984年推出了EGA卡。EGA将显示分辨率提高到640X350,同时与CGA完全兼容,可显示的颜色数据提高到了64种显示内存也扩展到256K。
VGA (Video Graphics Array:视频图形阵列)
1987年IBM公司在PS/2 (微通道计算机)电脑上,首次推了VGA卡,今天虽已难觅PS/2的影踪,但VGA早已成为业界标准。VGA达到了640X480的分辨率,并与MDA、CGA、EGA保持兼容,它增加二个6位DAC转换电路从而首次实现了从显示卡上直接输出R.G.B模拟信号到显示器,可显示的颜色增加到256色并且可支持大于256K的显示存储器容量。
SVGA (Suoer VGA 超级视频图形阵列)
SVGA是由VESA(视频电了标准学会,一个由众多显示卡生产而所组成的联盟)1989年推出的。它规定,超过VGA 640X480分辨率的所有图形模式均称为SVGA,SVGA标准允许分辨率最高达到1600X1200,颜色数最高可达到16兆(1600万)色。同时它还规定在800X600的分辨率下,至少要达到72Hz的刷新频率。
IBM在VGA的基础上,1989年推出了8514A,它可以达到1024X768的分辨率是对VGA的低分辨率的提高,但由于这一标准只能用于IBM的PS/2电脑其技术资料不对外公开,并且采用了导致高闪烁的隔行扫描方式,因此,未能像IBM过去的几个产品那样成为业界标,很快就被淘汰了。
XGA (Extended Graphic Array:增强图形阵列)
由于8514A的失败,IBM在1990年又推出了XGA,XGA与8514A同样达到了1024X768的分辨率,在64OX480时可以达到65536种颜色。它最大的改进是允许逐行扫描方式并且针对Windows的图形界面操作作了很大的改进,用硬件方式实现了图形加速,如位块传输、画线、硬件子图形等,它还使用了VRAM作为显示存储器,因此大大提高了显示速度。
显示分辨率 (Resolution)
指视频图像所能达到的清晰度,由每幅图像在显示屏幕的水平和垂直方向上的像素点数来表示比如说某显示分辨率为640X480。就是说凡水平方向上有640个像素、垂直方向上有480个像素。
像素(Pixel)
Pixel是Picture element (图像元素)的简写。像素是组成显示屏幕上的点,是显示画面的最小组成单位。
点距(Dot Pitch)
指显示屏幕上同色荧光点的最短距离,它决定着像素的大小和显示图像的清晰度。通点距有0.39,0.31,0.28,0.26,0.25及0.20等几种规格。
颜色深度(Color Depth)
指每个像素可显示的颜色数。每个像素可显示的颜色数取决于显示卡上给它所分配的DAC位数,位数越高,每个像素可显示出的颜色数目就越多。但是在显示分辨率一定的情况下一块显示卡所能显示的颜色数目还取决于其显示存储器的大小。比如一块两兆显存的显示卡,在1024X768的分辨率下,就只能显示16位色(即65536”种颜色),如果要显示24位彩色(16.8M), 就必须要四兆显存。
伪彩色(Pseudo Color)
如果每个像素使用的是1个字节的DAC位数 (即8位),那么每个像素就可以显示出256种颜色,这种颜色模式称为“伪彩色”又叫8位色。
高彩色(High Color)
如果给每个像素分配2个字节的DAC位数(即16位),则每个像素可显示的颜色最多可以达到65536种,这种颜色模式称为“高彩色” ,又叫“16位色”。
真彩色(True Color)
在显示存储器容量足够的情况下,如果给每个像素分配3个字节的DAC (即24位),那么每个像素可显示的颜色则可达到不可思议的1680万种(168M色)——尽管人眼可分辨的颜色只是其中很少一部分而已,这种颜色模式就是“真彩色”,又叫“24位色”。目前较好的显示卡已经达到了32位色的水平。
刷新频率(Refresh Rate )
在显示卡输出的同步信号控制下,显示器电于束先对屏幕从左到右进行水平扫描,然后又很快地从下到上进行垂亘扫描,这两遍扫描完成后才组成一幅完整的画面,这个扫描的速度就是刷新频率,意思就是每秒钟内屏幕画向更新的次数,刷新频率越高,显示画面的闪烁就越小。
带宽(Bandwidth )
显示存储器同时输入输出数据的最大能力,常以每秒存取数据的最大字节数MB/S)来表示越高的刷新频率往往需要越大的带宽。
纹理映射
每一个3D造型都是由众多的三角形单元组成的,要使它显示的更加真实的话,就要在它的表面粘贴上模拟的纹理和色彩,比如一块大理石的纹理等。而这些纹理图像是事先放在显示存储器中的,将之从存储器中取出来并粘贴到3D造型的表面,这就是纹理映射。
Z缓冲(Z-BUFFERING)
Z的意思就是除X 、Y轴以外的第三轴,即3D立体图型的深度。Z缓冲是指在显示存储器中预先存放不同的3D造型数据,这样,当画面中的视角发生变化时,可以即时地将这些变化反映出来从而避免了由于运算速度滞后所造成的图形失真。
3D显卡

3D显卡术语简介
如今3D显示技术的发展日新月异,各种最新一代的显示卡蕴含着最新的技术不断的涌现,各个显示芯片厂商也都在新产品的介绍中展示着产品的独特性能与3D特效,其中许多诸如“三线过滤”、“阿尔法混合”、“材质压缩”、“硬件T&L”等等名词可能会令您疑惑不解,本文就是为您通俗的来解释阐述这些专业术语,以使您能对枯燥的3D术语能有所把握。
这些最新的3D显示技术与特性是在目前3D显卡中正流行的或是将要广泛流行的技术标准,展望未来,在21世纪中显示技术也必将进入一个新的阶段,面对着纷繁的显示技术与显卡市场,要知最后花落何家呢,还是让我们拭目以待吧!
16-, 24-和32-位色
16位色能在显示器中显示出65,536种不同的颜色,24位色能显示出1670万种颜色,而对于32位色所不同的是,它只是技术上的一种概念,它真正的显示色彩数也只是同24位色一样,只有1670万种颜色。对于处理器来说,处理32位色的图形图像要比处理24位色的负载更高,工作量更大,而且用户也需要更大的内来存运行在32位色模式下。
2D卡
没有3D加速引擎的普通显示卡。
3D卡
有3D图形芯片的显示卡。它的硬件功能能够完成三维图像的处理工作,为CPU减轻了工作负担。通常一款3D加速卡也包含2D加速功能,但是还有个别的显示卡只具有3D图像加速能力,比如Voodoo2。
Accelerated Graphics Port (AGP)高速图形加速接口
AGP是一种PC总线体系,它的出现是为了弥补PCI的一些不足。AGP比PCI有更高的工作频率,这就意味着它有更高的传输速度。AGP可以用系统的内存来当作材质缓存,而在PCI的3D显卡中,材质只能被储存在显示卡的显存中。
Alpha Blending(透明混合处理)
它是用来使物体产生透明感的技术,比如透过水、玻璃等物理看到的模糊透明的景象。以前的软件透明处理是给所有透明物体赋予一样的透明参数,这显然很不真实;如今的硬件透明混合处理又给像素在红绿蓝以外又增加了一个数值来专门储存物体的透明度。高级的3D芯片应该至少支持256级的透明度,所有的物体(无论是水还是金属)都由透明度的数值,只有高低之分。
Anisotropic Filtering (各向异性过滤)
(请先参看二线性过滤和三线性过滤)各向异性过滤是最新型的过滤方法,它需要对映射点周围方形8个或更多的像素进行取样,获得平均值后映射到像素点上。对于许多3D加速卡来说,采用8个以上像素取样的各向异性过滤几乎是不可能的,因为它比三线性过滤需要更多的像素填充率。但是对于3D游戏来说,各向异性过滤则是很重要的一个功能,因为它可以使画面更加逼真,自然处理起来也比
三线性过滤会更慢。
Anti-aliasing(边缘柔化或抗锯齿)
由于3D图像中的物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是使画面平滑自然,提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(Full Scene Anti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度,全景抗锯齿在进行处理时, 须对图像附近的像素进行2-4次采样, 以达到不同级别的抗锯齿效果。3dfx在驱动中会加入对2x2或4x4抗锯齿效果的选择, 根据串联芯片的不同, 双芯片Voodoo5将能提供2x2的抗锯齿效果, 而四芯片的卡则能提供更高的4x4抗锯齿级别。 简而言之,就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
API(Application Programming Interface)应用程序接口
API是存在于3D程序和3D显示卡之间的接口,它使软件运行与硬件之上。为了使用3D加速功能,就必须使用显示卡支持的API来编写程序,比如Glide, Direct3D或是OpenGL。
Bi-linear Filtering(二线性过滤)
是一个最基本的3D技术,现在几乎所有的3D加速卡和游戏都支持这种过滤效果。当一个纹理由小变大时就会不可避免的出现“马赛克”现象,而过滤能有效的解决这一问题,它是通过在原材质中对不同像素间利用差值算法的柔化处理来平滑图像的。其工作是以目标纹理的像素点为中心,对该点附近的4个像素颜色值求平均,然后再将这个平均颜色值贴至目标图像素的位置上。通过使用双线性过滤,虽然不同像素间的过渡更加圆滑,但经过双线性处理后的图像会显得有些模糊。

② 一文了解遥感卫星影像处理及其发展趋势

当空中的遥感卫星获取了地球数字影像,并传回地面,是否工作就结束了?答案显然是否定的,相反, 这正是遥感数字图像处理工作的开始

遥感数字图像 (Digital image,后简称“遥感影像”)是数字形式的遥感图像,地球表面不同区域和地物能够反射或辐射不同波长的电磁波,利用这种特性,遥感系统可以产生不同的遥感数字图像。

让其与一般的数字图像,也就是我们平时拍摄的电子照片拉开距离的,是遥感影像的 成像范围与精细度 。遥感卫星的摄影区域是地球级的宏观维度,影像中的每个像素都对应着三维真实世界中的某几个、某个或某部分地物实体,根据卫星成像分辨率的不同,其中一个像素就有可能是一棵树、一辆车或是一幢大楼的某个窗户。

所以,图像每个像素点的亮度值(DN值,Digital Number)都有着重要的信息意义,要获取其中的准确信息,用户需要根据自身应用目标,对卫星影像中的像素进行管理、转换、校正、增强、提取一系列的“神操作”,便于后续深入挖掘与业务融合应用。

DN值(Digital Number ):遥感影像像元亮度值,记录地物的灰度值。无单位,是一个整数值,值大小与传感器的辐射分辨率、地物发射率、大气透过率和散射率等相关,反映地物的辐射率(Radiance)。

我们可以回到“P图界”进行比喻,为了让自己的社交媒体形象更加完美,我们打开某图秀秀软件,美白、瘦身、磨皮、祛痘....当然,遥感影像的数据处理复杂专业多了,到什么地步呢?它可以被写成 一本教科书 ——

今天,我们就来了解一下,这其中到底有哪些“神操作”,又如何应用?以及在遥感产业飞速发展的今天,高频的数据产出、算法和人工智能的冲击,会否让这些“神操作”的传统模式和底层逻辑,发生变革?

01、 什么是遥感影像处理?

遥感影像处理,是利用 计算机图像处理系统 遥感图像中的像素 进行系列操作的过程。

遥感影像中包含着很多信息,通过数字化(成像系统的采样和量化、数字存储)后,才能有效地进行信息分析和内容提取。在此基础上,对影像数据进行处理“再加工”,如校正图形对齐坐标、增强地物轮廓,能够极大地 提升图像处理的精度和信息提取的效率, 这个过程都可以称为“遥感数字图像处理”。

作为“对地观测”过程的一个基本而重要的组成部分,在卫星应用产业链中,遥感影像处理环节处于中下游、承前启后的重要位置,前端承接卫星地面设施,后端面向农林、气象、自然资源等行业具体的业务应用,提供“就绪”的数据服务或工具。

02、 为什么遥感影像处理是应用的“必经之路”?

在我们看到整齐美观的谷歌地球这类数字地球产品,或是遥感卫星应用在自然资源管理、环保、农业、气象等领域的专题图或解译图,都需要经过影像处理的中间“洗礼”。

因为遥感卫星在高空“作业”,其成像环境复杂程度远远超越我们日常地面的拍照环境,会遇到传感器不稳定,地球曲率、大气条件、光照变化、地形变化等系统与非系统因素造成的图形几何变形、失真、模糊、噪点等。遥感数据中心对图像进行去除条带、几何粗校正等初步处理,数据到达各终端用户手中时,还需要对数据做进一步的精细处理,使其更加接近真实世界的实体空间环境与坐标,并根据其自身业务分析目标,进行专业处理,为接下来的遥感影像分析、解译、业务应用做好准备。

总的来说,遥感影像处理的主要目标为以下三点:

图像校正 :恢复、复原图像。在进行信息提取前,必须对遥感图像进行校正处理,以使影像能够正确地反映实际地物信息或物理过程。

图像增强 :压抑或去除图像噪声。为使遥感图像所包含的地物信息可读性更强,感兴趣目标更突出、容易理解和判读,需要对整体图像或特定地物信息进行增强处理。

信息提取 :根据地物光谱特征和几何特征,确定不同地物信息的提取规则,在此基础上,利用该规则从校正后的遥感数据中提取各种有用的地物信息。

03、 遥感数据处理有哪些功能?

完整的遥感数字图像处理包含了硬件系统和软件系统两大部分,遥感数据存储量庞大,需要大容量数字存储设备与软件共同配合存储处理,这里主要介绍软件处理部分。下面展示的是一个专业的图像处理软件界面,与常用的办公软件相比,图像处理系统的各个功能显得比较分散,各个菜单之间的联系不紧密。

从某种意义上看,图像处理系统更像一个图像处理综合 工具箱 ,由于图像处理目标不同,用户可以调用某个功能、某几项功能的组合,并非所有流程都选用。这里将一些典型的处理功能进行归纳,并对基础步骤进行介绍。

数字存储与管理

遥感影像本身内存较大,1景7波段的landsat遥感影像至少有200MB,而高光谱影像可能达到1GB;而进入时间与空间双重高分时代以来,数据高频产出与累积,也促使遥感进入大数据时代,让遥感云服务、存储管理、快速分发共享趋势愈加明显。基于私有云、混合云的遥感影像数字存储、在线更新、管理检索、发布浏览,已经逐步成为与遥感数据处理不可分割的重要基础,并将大幅度提升后续遥感影像专业处理与业务应用效率。

影像预处理

辐射校正(Radiometric Correction)

指对由于外界因素,数据获取和传输系统产生的系统的、随机的辐射失真或畸变进行的校正,消除或改正因辐射误差而引起影像畸变的过程。

简单概括,就是 去除传感器或大气“噪声” ,更准确地表示地面条件, 提高图像的“保真度” ,主要是恢复数据缺失、去除薄雾,或为镶嵌和变化监测做好准备。

辐射校正在动态监测中的作用 :在多时相遥感图像中,除了地物的变化会引起图像中辐射值的变化外,不变的地物在不同时相图像中的辐射值也会有差异。如果需要利用多时相遥感图像的光谱信息对地物变化状况进行动态监测,首要消除不变地物的辐射值差异。

通过相对辐射校正,将一图像作为参考(或基准)图像,调整另一图像的DN值,使得两时相图像上同名的地物具有相同的DN值,这个过程也叫 多时相遥感图像的光谱归一化 。这样就可以通过分析不同时相遥感图像上的辐射值差异来实现变化监测,从而完成 地物动态变化的遥感动态监测

几何校正(Geometric correction)

遥感成像过程中,因摄影材料变形、物镜畸变、大气折光、地球曲率、地球自转、地形起伏等因素导致的综合影响,原始图像上地物的几何位置、形状、大小、尺寸、方位等特征与其对应的地面地物的特征往往是不一致的,这种不一致为几何变形,也称几何畸变。几何校正就是通过一系列的数学模型来改正和消除这种几何畸变,使其定位准确。

几何校正原理示意:真实世界的地形是立体而凹凸不平的,但遥感卫星传感器只能获取平面二维像素,这就带来了地形扭曲 | 图源:网络;重制图:超擎时空


图像增强

图像对比度增强 (Image Contrast Enhancement)

统计每幅图像的各亮度的像元数而得到的随机分布图,即为该幅图像的直方图。 一般来说,包含大量像元的图像,像元的亮度随机分布应是正态分布。直方图为非正态分布,说明图像的亮度分布偏亮、偏暗或亮度过于集中,图像的对比度小,需要调整该直方图到正态分布,以改善图像的质量,并便于分辨地物轮廓并提取信息。

彩色合成

为了充分利用色彩在遥感图像判读和信息提取中的优势,常利用彩色合成的方法对多光谱图像进行处理,以得到彩色图像。如上图,彩色图像可以分为真彩色图像和假彩色图像。

密度分割

将灰度图像按照像元的灰度值进行分级,再分级赋以不同的颜色,使原有灰度图像变成伪彩色图像,达到图像增强的目的。

图像运算

两幅或多幅单波段图像,空间配准后可进行算术运算,实现图像的增强。根据地物在不同波段的灰度差异,通过不同波段的代数运算产生新的“波段”,常见的有加法运算、减法运算、比值运算和综合运算,如:

减法运算:可突现出两波段差值大的地物,如红外-红,可突现植被信息。
比值运算:常用于计算植被指数、消除地形阴影等。
植被指数:NDVI=(IR-R)/(IR+R)

图像融合

遥感图像信息融合是有效提升图像分辨率与信息量的手段,将多源遥感数据在统一的地理坐标系中,采用一定的算法生成一组新的信息或合成图像的过程。

不同的遥感数据具有不同的空间分辨率、波谱分辨率和时相分辨率,将低分辨率的多光谱影像与高分辨率的单波段影像重采样生成一副高分辨率多光谱影像遥感的图像处理技术,使得处理后的影像既有较高的空间分辨率,又具有多光谱特征。

图像裁剪

在遥感实际应用中,用户可能只对遥感影像中的一个特定的范围内的信息感兴趣,这就需要将遥感影像裁减成研究范围的大小。常用的裁剪方式有,按ROI(兴趣区域)裁剪、按文件裁剪(按照指定影像文件的范围大小)、按地图裁剪(根据地图的地理坐标或经纬度的范围)。

图像镶嵌

也叫图像拼接,是将两幅或多幅数字影像(它们有可能是在不同的摄影条件下获取的)拼在一起,构成一幅整体图像的技术过程。 通常是先对每幅图像进行几何校正,将它们规划到统一的坐标系中,然后对它们进行裁剪,去掉重叠的部分,再将裁剪后的多幅影像装配起来形成一幅大幅面的影像。

镶嵌匀色

将若干幅互为邻接的遥感影像通过拼接匀色技术合并成一幅统一的新影像。

信息提取

遥感图像中目标地物的特征是地物电磁波的辐射差异在遥感影像上的反映。依据遥感图像上的地物特征,识别地物类型、性质、空间位置、形状、大小等属性的过程即为遥感信息提取。

目视判读

也叫人工解译,即用人工肉眼与经验判读遥感影像,对遥感影像上目标地物的范围进行手工勾绘,达到信息提取的目的。人工解译为传统常用的信息提取办法,但在海量影像下判读分析效率相对低。

图像分类

是依据是地物的光谱特征,确定判别函数和相应的判别准则,将图像所有的像元按性质分为若干类别的过程,主要方式分为监督分类与非监督分类。

- 监督分类

监督分类是在分类前人们已对遥感影像样本区中的类别属性有了先验知识,进而可利用这些样本类别的特征作为依据建立和训练分类器(亦即建立判别函数),进而完成整幅影像的类型划分,将每个像元归并到相对应的一个类别中去。

监督分类也是目前遥感AI最为常见的应用方式,即通过样本库,用机器学习对特定地物进行分类、标注或识别。

- 非监督分类

非监督分类也称聚类分析,是指人们事先对分类过程不施加任何的先验知识,而仅凭数据(遥感影像地物的光谱特征的分布规律)、即自然聚类的特性进行“盲目”的分类;是以集群为理论基础,通过计算机对图像进行集聚统计分析的方法,是模式识别的一种方法。一般算法有:回归分析、趋势分析、等混合距离法、集群分析、主成分分析和图形识别等。

监督分类和非监督分类的区别 :有监督必须有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律;非监督没有训练集,只有一组数据,在该组数据集内寻找规律。

04、 遥感数据处理正在发生怎样的改变?

遥感数据处理更像是生产制造中的“原材料粗加工”环节,也是遥感影像数据智能应用和业务融合的前序手段,从前文的介绍来看,其过程也是较为复杂和专业的。

作为对地观测和遥感产业化的重要组成部分,位于产业中下游的遥感数据处理,也受到了大数据时代的冲击,正在响应这一趋势并发生变革,走向 实时化、标准化、规模化、自动化

在企业数字化转型中,人们常说的一句话是,所有传统产业都值得用数字化再做一遍,在传统的数据生产、信息服务产业也是如此,其模式和流程都值得用算法和AI再做一遍。

当算法与人工智能逐步渗透遥感数据处理这个环节,能够解决遥感产业数据生产服务中的很多难题,例如数据分发周期与链路长,处理环节多,海量数据处理的精准、一致性等问题,这我们可以将其视为“自动化批量处理”。

当中游算法引擎解决了数据服务和数据计算效率和自动化流程的问题后,下游也将出现更多适用于各种垂直细分场景的精细化应用数据产品,而在以上介绍的遥感影像信息提取环节,有了AI和算法的参与,也出现很多高效的自动化功能,如目标识别、地物提取、地物分类、变化检测等,逐步帮助人类提高解译的效率,形成遥感产业下游的“智能化信息挖掘”机制。

我们可以看到,从遥感数据获取源头,到数据处理,到终端应用,其效率与底层数据模式密不可分,在卫星互联网和对地观测 星座 逐步构建成型的趋势下,只有将数据的获取、处理和共享流程标准化,大规模、自动化、流水化的遥感产业才能更好地地为政企数字化转型发挥动能,也真正地迎来时空大数据时代。

参考资料

《遥感数字影像处理教程》韦玉春 汤国安 杨昕 编着

③ 摄像头深度测试指的是

对于摄像头的最大性能的测试。
首先通过kinectsdk-v2.0-1409-setp.exe这个软件进行调试摄像头,然后安装opencv用来报村16位深度图像,利用官方所给的源码进行深度算法测试,在VC++中添加依赖库,并且将demo官网中提取出来的项目代表,获取opencv中的16bit的png图像。最后通过C语言将深度图转换成伪彩色图。

④ matlab 里小波变换的问题

http://hi..com/kekewutao/blog/item/0bafc700d2849011728b65fd.html

使用MATLAB设计小波变换程序中的若干问题3[转贴]
使用MATLAB设计小波变换程序中的若干问题仍需探讨的问题:为什么使用PNG存储经小波变换后的重构图像变大? 我曾在清华大学的多媒体课程的教师答疑中写了“老师:尊重事实:DB9阈值10的PNG文件就是比原文件大”和“续一:尊重事实:DB9阈值10的PNG文件就是比原文件大”,在林老师的鼓励和指导下,我进行了继续试验、分析,与刘赵璧(Anna)同学进行了探讨,并得到了Lily(姓名还不知道)同学的帮助,同时同学们也做了各自不同的实验,现在的实验结果可以说基本上比较明确,那就是有些图像就是会变大,这与图像的种类、纹理等密切相关。林老师曾经鼓励我去研究一下PNG的压缩方法,无奈我资质不够,至今在这方面的进展不大。由于临近期末考试,作业也要抓紧,所以我暂且将没有搞明白的内容搁置,待寒假期间再进行,希望对这些问题有各种看法也有兴趣研究的同学对此发表意见。以下是我最近试验、分析和阅读到的一些相关信息。试验结果 我首先根据老师第三章的Haar矩阵算法推演出DB9的系数矩阵,并实现了分解重构及阈值处理程序,对几种照片进行了比较,然后使用3.1节的simplecmp进行了相同照片的实验,结果相当一致。细小差别是因为我的程序对边界的扩展与MATLAB不一样,在设置阈值后引起了边界上小部分不一致造成的。表一:真彩色图像百合花的处理结果阈值 Png
Haar(Mat/Mine) 0数
Haat
(Mat/Mine) PNG
Db9
(MAT / Mine) 0数
Db9
(MAT / Mine)
95973 / 95973
0 95973 / 95973 27524 / 24268 95973 / 95973 27 / 9
5 74552 / 74292 135838 / 136063 101882 / 101992 167412 /165662
10 51976 / 51504 163423 / 163741 98411 / 98861 199200 / 195730
20 32474 / 32346 180167 / 180267 92295 / 93660 220629 / 217214
从对比表中我们能够看到2个程序的结果相当一致,因此,我不再给出两种程序的对比,而是使用simplecmp直接处理的结果说明。 将百合花图像使用[I,map]=rgb2ind(x,255);转换成为彩色图像处理,在将伪彩色图像转换为连续变换的灰度图像(如2.4常见问题中讨论的方法)进行处理:表二:百合花的伪彩色图像和处理后的灰度(gray)图像的处理结果阈值 Png
Haar(Index/Gray) 0数
Haar(Index/Gray) PN
Db9(Index/Gray) 0数
Db9
(Index/Gray)
48535 / 43235
0 48535 / 43235 6096/ 7430 48535/ 43235 18 / 22
5 53207 / 36450 9473/ 43626 60362 / 49927 7009 / 52852
10 58025 / 23602 13362/ 54344 64916 / 47813 13202 / 65881
20 60193/ 14347 21948 / 60039 66020/ 46014 24468 / 73494
其他伪彩色与进行加工的灰度图的结果与此完全一致,这也就说明了如果伪彩色文件的色板不是单调性递增就不适合小波分解。“The color bar to the right of the image is not smooth and does not monotonically progress from dark to light. This type of indexed image is not suitable for direct wavelet decomposition with the toolbox and needs to be preprocessed.”。我对 Facets进行同样的实验,结果与此一致。这种处理的结果可以从图像象素值的连续性来理解。这是处理与不处理的图像的中间一行的数据图。另外,不连续的图像质量在压缩后会被极大地破坏图2伪彩色文件变化前后的第128行数据的连续性情况对比分析 多种试验图片基本能够反映类似的结果,虽然Indexed Color image有时令Haar小波的分解重构图像出现增大现象,单经过处理之后,这种现象就会消失。然而对于DB9可以看到无论真彩色还是处理后的灰度图像都在阈值5 10处超过原始图像的大小,能不能因此得出DB9不适合进行图像压缩的结论呢?有一些同学确实这样认为,但我认为这种观点因为忽略了如何利用小波进行压缩和还原的过程,这也正是第四章老师为我们讲述的那些编码算法而造成的。在推荐材料[1]中也有类似的说明。图3、JPEG2000的基本结构看一下上图就可以明白为什么PNG不能衡量小波压缩的效率问题。上图的图像原始数据首先经过正变换(Forward Transform)就是小波变换的得到小波系数,变换的小波系数经过阈值处理后进行量化,编码后得到压缩的图像文件JPEG2000,如果你没有JPEG2000的显示程序,那么你就不能看到它。它的显示程序就是由解码器从压缩数据中解出编码,进行反量化,得到小波系数,再实施逆变换(Inverse Transform)就是小波系数重构。最终得到图像的原始数据。因此衡量小波变换的效率是应该看你选择的小波能不能分解出适合“编码器”压缩的小波系数,这种编码器不是PNG的LZ77,因为LZ77压缩小波分解系数的效率不是最好的。这种高效编码器在第四章可以找到。那么我们存储 PNG文件的目的是什么呢?我认为压缩与去噪(de-noising)是同一种方法的两种提法。他们都使用了设置阈值的方法。我们可以仔细分析经过重构的PNG图片的质量来体会这种消除噪音的效果,也可以评定小波压缩后的图片的视觉质量,同时PNG的文件大小也可以让我们从LZ77算法的本质来理解小波变换压缩后的重构图像的内容变化情况。比如,我们可以从表2中的灰度图像在haar变换取阈值20时出现块状象素,文件大小变为14347,而db9却为46014,超过原始的PNG大小,但并不出现块状而是具有波状的特征。这本身说明了采用Harr小波压缩或去噪后重构的图像中相同的‘串’增多,便于PNG方式压缩,而db9则在相同阈值的情况下不会象Haar那样制造‘马赛克’,说明了它的平滑性,这也能帮助我们理解小波的特性。当然,当阈值继续增加后,超过某一界限,即使DB9也仍然会使PNG文件大小减小。这本身也就是由双尺度(Dyadic)小波变换的两种滤波器决定的。低通滤波结果相当于平均值,高通滤波结果相当于差值,差值能够保证重构图像的细节部分丢失最小,如果差值部分被阈值略去的过多,细节就会越来越少,平均意义的值约来越多,直到多到某一个临界值时(该图像的阈值取到40),重构的图像也可能出现较多的相同数字串,这就会提高PNG的压缩结果。下图是我对Haar(蓝色)小波取阈值为20,db9(红色)小波阈值取40时第128行1:32列的数据曲线与原始数据(黑色)曲线的对比。可以看出也db9在阈值=40时出现了较多的平均值,但比haar在阈值=20时的曲线要少的多。图4、haar(蓝色)和db9(红色)压缩后重构图像的第128行,1:32列的数据曲线不过,MATLAB给我们提供了量化的方法来决定如何选取阈值。在HELP Wavelet Toolbox : Advance Concepts: Choosing the Optimal Decomposition中提到了几种利用“熵”的概念来衡量如何选取合适的分解级。感兴趣的同学还可以参看wentropy, wdcbm2, wpdec的帮助。文献[1]中也提到了衡量压缩质量的客观化方法MSE,PNSR并指出小波的重构滤波器的长度越长,形状越规则越能够提供良好的压缩性能。 上面对PNG的讨论因为没有足够的算法分析和程序解读,同时也没有准确的试验数据,因此只能作为猜测。但衡量小波压缩效率的方法我坚持认为不能以PNG文件大小来解说,如果采用图像文件大小来衡量,应该以JPEG2000来衡量。

⑤ 分析比较下列图像增强方法:直方图均衡化、平滑、锐化、伪彩色增强等,各种的优缺点,总结其适用场合

直方图均衡化:直方图均衡化是将原图象的直方图通过变换函数修正为均匀的直方图,然后按均衡直方

图修正原图象。图象均衡化处理后,图象的直方图是平直的,即各灰度级具有相同的出现频数,那么由

于灰度级具有均匀的概率分布,图象看起来就更清晰了。

图象在传输过程中,由于传输信道、采样系统质量较差,或受各种干扰的影响,而造成图象毛
糙,此时,就需对图象进行平滑处理。目的:去除或衰减图象中噪声和假轮廓;• 方法分类:空域和频域方法。

图象锐化(Image Sharpening)
1. 图象变模糊原因:(1)成像系统聚焦不好或信道过窄;(2)平均或积分运算;使目标物轮廓变模糊,细节轮廓不清晰。
2. 目的:加重目标物轮廓,使模糊图象变清晰。
3. 方法分类:
(1)空域微(差)分法—模糊图象实质是受到平均或积分运算,故对其进行逆运算(微分),使图象清
晰;
(2) 频域高通滤波法—从频域角度考虑,图象模糊的实质是高频分量被衰减,故可用高频滤波加重滤波
使图象清晰。在图像的识别中常需要突出边缘和轮廓信息。图像锐化就是增强图像的边缘或轮廓。图像平滑通过积分过程使得图像边缘模糊,图像锐化则通过微分而使图像边缘突出、清晰。

人眼的视觉特性:
• 分辨的灰度级介于十几到二十几级之间;
• 彩色分辨能力可达到灰度分辨能力的百倍以上。
彩色增强技术是利用人眼的视觉特性,将灰度图像变成彩色图像或改变彩色图像已有彩色的分布,改善图像的可分辨性。彩色增强方法可分为伪彩色处理和真彩色处理。
伪彩色的含义:把不敏感的灰度信号转换成敏感的彩色信号,称为伪彩色增强。伪彩色指定某灰度为某种彩色。
自然物体的彩色称为真彩色。
伪彩色增强是把黑白图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,得到一幅彩色图像的技术。使原图像细节更易辨认,目标更容易识别。伪彩色增强的方法主要有密度分割法、灰度级一彩色变换、频率域伪彩色增强三种。

我当初也没有学好,只是列出它们的作用 ,至于适用场合看用途应该就可以判断了。都是我一个一个找的啊。

⑥ (急)数字图像处理主要包含哪八个方面的内容

主要内容有:图像增强、图像编码、图像复原、图像分割、图像分类、图像重建、图像信息的输出和显示。

图像增强用于改善图像视觉质量;图像复原是尽可能地恢复图像本来面目;图像编码是在保证图像质量的前提下压缩数据,使图像便于存储和传输;图像分割就是把图像按其灰度或集合特性分割成区域的过程。

图像分类是在将图像经过某些预处理(压缩、增强和复原)后,再将图像中有用物体的特征进行分割,特征提取,进而进行分类;图像重建是指从数据到图像的。处理,即输入的是某种数据,而经过处理后得到的结果是图像。

(6)伪彩色算法扩展阅读

发展概况

数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。

早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室(JPL)。

他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。

随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。

在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像处理取得的另一个巨大成就是在医学上获得的成果。

⑦ 有关matlab的问题

你在说什么

⑧ 在图像处理中有哪些算法

太多了,去找本书看看吧!给个大概的介绍好了
图像处理主要分为两大部分:
1、图像增强
空域方法有 直方图均衡化
灰度线性变化
线性灰度变化
分段线性灰度变化
非线性灰度变化(对数扩展
指数扩展)

图像平滑
领域平均法(加权平均法
非加权领域平均法)
中值滤波
图像锐化
Roberts算子
Sobel算子
拉普拉斯算子

频域方法有
低通滤波
理想低通滤波
巴特沃斯低通滤波
指数低通滤波
梯形低通滤波
高通滤波
理想高通滤波
巴特沃斯高通滤波
指数高通滤波
梯形高通滤波
彩色图像增强(真彩色、假彩色、伪彩色增强)
2、图像模糊处理
图像模糊处理
运动模糊(维纳滤波
最小均方滤波
盲卷积
……


高斯模糊(维纳滤波
最小均方滤波
盲卷积
……

图像去噪处理
高斯噪声
(维纳滤波
样条插值
低通滤波
……

椒盐噪声
(中值滤波
……

⑨ 怎样使用OpenCV进行人脸识别

友情提示,要看懂代码前,你得先知道OpenCV的安装和配置,会用C++,用过一些OpenCV函数。基本的图像处理和矩阵知识也是需要的。[gm:我是箫鸣的注释]由于我仅仅是翻译,对于六级才过的我,肯定有一些翻译错的或者不当的地方,所以请大家纠错。

1.1.介绍Introction

从OpenCV2.4开始,加入了新的类FaceRecognizer,我们可以使用它便捷地进行人脸识别实验。本文既介绍代码使用,又介绍算法原理。(他写的源代码,我们可以在OpenCV的opencv\moles\contrib\doc\facerec\src下找到,当然也可以在他的github中找到,如果你想研究源码,自然可以去看看,不复杂)目前支持的算法有

Eigenfaces特征脸createEigenFaceRecognizer()

Fisherfaces createFisherFaceRecognizer()

LocalBinary Patterns Histograms局部二值直方图 createLBPHFaceRecognizer()

下面所有的例子中的代码在OpenCV安装目录下的samples/cpp下面都能找到,所有的代码商用或者学习都是免费的。1.2.人脸识别Face Recognition

对人类来说,人脸识别很容易。文献[Tu06]告诉我们,仅仅是才三天的婴儿已经可以区分周围熟悉的人脸了。那么对于计算机来说,到底有多难?其实,迄今为止,我们对于人类自己为何可以区分不同的人所知甚少。是人脸内部特征(眼睛、鼻子、嘴巴)还是外部特征(头型、发际线)对于人类识别更有效?我们怎么分析一张图像,大脑是如何对它编码的?David Hubel和TorstenWiesel向我们展示,我们的大脑针对不同的场景,如线、边、角或者运动这些局部特征有专门的神经细胞作出反应。显然我们没有把世界看成零散的块块,我们的视觉皮层必须以某种方式把不同的信息来源转化成有用的模式。自动人脸识别就是如何从一幅图像中提取有意义的特征,把它们放入一种有用的表示方式,然后对他们进行一些分类。基于几何特征的人脸的人脸识别可能是最直观的方法来识别人脸。第一个自动人脸识别系统在[Kanade73]中又描述:标记点(眼睛、耳朵、鼻子等的位置)用来构造一个特征向量(点与点之间的距离、角度等)。通过计算测试和训练图像的特征向量的欧氏距离来进行识别。这样的方法对于光照变化很稳健,但也有巨大的缺点:标记点的确定是很复杂的,即使是使用最先进的算法。一些几何特征人脸识别近期工作在文献[Bru92]中有描述。一个22维的特征向量被用在一个大数据库上,单靠几何特征不能提供足够的信息用于人脸识别。特征脸方法在文献[TP91]中有描述,他描述了一个全面的方法来识别人脸:面部图像是一个点,这个点是从高维图像空间找到它在低维空间的表示,这样分类变得很简单。低维子空间低维是使用主元分析(Principal Component Analysis,PCA)找到的,它可以找拥有最大方差的那个轴。虽然这样的转换是从最佳重建角度考虑的,但是他没有把标签问题考虑进去。[gm:读懂这段需要一些机器学习知识]。想象一个情况,如果变化是基于外部来源,比如光照。轴的最大方差不一定包含任何有鉴别性的信息,因此此时的分类是不可能的。因此,一个使用线性鉴别(Linear Discriminant Analysis,LDA)的特定类投影方法被提出来解决人脸识别问题[BHK97]。其中一个基本的想法就是,使类内方差最小的同时,使类外方差最大。

近年来,各种局部特征提取方法出现。为了避免输入的图像的高维数据,仅仅使用的局部特征描述图像的方法被提出,提取的特征(很有希望的)对于局部遮挡、光照变化、小样本等情况更强健。有关局部特征提取的方法有盖伯小波(Gabor Waelets)([Wiskott97]),离散傅立叶变换(DiscreteCosinus Transform,DCT)([Messer06]),局部二值模式(LocalBinary Patterns,LBP)([AHP04])。使用什么方法来提取时域空间的局部特征依旧是一个开放性的研究问题,因为空间信息是潜在有用的信息。

1.3.人脸库Face Database

我们先获取一些数据来进行实验吧。我不想在这里做一个幼稚的例子。我们在研究人脸识别,所以我们需要一个真的人脸图像!你可以自己创建自己的数据集,也可以从这里(http://face-rec.org/databases/)下载一个。

AT&TFacedatabase又称ORL人脸数据库,40个人,每人10张照片。照片在不同时间、不同光照、不同表情(睁眼闭眼、笑或者不笑)、不同人脸细节(戴眼镜或者不戴眼镜)下采集。所有的图像都在一个黑暗均匀的背景下采集的,正面竖直人脸(有些有有轻微旋转)。YaleFacedatabase A ORL数据库对于初始化测试比较适合,但它是一个简单的数据库,特征脸已经可以达到97%的识别率,所以你使用其他方法很难得到更好的提升。Yale人脸数据库是一个对于初始实验更好的数据库,因为识别问题更复杂。这个数据库包括15个人(14个男人,1个女人),每一个都有11个灰度图像,大小是320*243像素。数据库中有光照变化(中心光照、左侧光照、右侧光照)、表情变化(开心、正常、悲伤、瞌睡、惊讶、眨眼)、眼镜(戴眼镜或者没戴)。

坏消息是它不可以公开下载,可能因为原来的服务器坏了。但我们可以找到一些镜像(比如 theMIT)但我不能保证它的完整性。如果你需要自己剪裁和校准图像,可以阅读我的笔记(bytefish.de/blog/fisherfaces)。ExtendedYale Facedatabase B 此数据库包含38个人的2414张图片,并且是剪裁好的。这个数据库重点是测试特征提取是否对光照变化强健,因为图像的表情、遮挡等都没变化。我认为这个数据库太大,不适合这篇文章的实验,我建议使用ORL数据库。

1.3.1. 准备数据
我们从网上下了数据,下了我们需要在程序中读取它,我决定使用CSV文件读取它。一个CSV文件包含文件名,紧跟一个标签。

/path/to/image.ext;0

假设/path/to/image.ext是图像,就像你在windows下的c:/faces/person0/image0.jpg。最后我们给它一个标签0。这个标签类似代表这个人的名字,所以同一个人的照片的标签都一样。我们对下载的ORL数据库进行标识,可以获取到如下结果:

./at/s1/1.pgm;0
./at/s1/2.pgm;0
...
./at/s2/1.pgm;1
./at/s2/2.pgm;1
...
./at/s40/1.pgm;39
./at/s40/2.pgm;39
想象我已经把图像解压缩在D:/data/at下面,而CSV文件在D:/data/at.txt。下面你根据自己的情况修改替换即可。一旦你成功建立CSV文件,就可以像这样运行示例程序:

facerec_demo.exe D:/data/at.txt
1.3.2 Creating the CSV File

你不需要手工来创建一个CSV文件,我已经写了一个Python程序来做这事。

[gm:说一个我实现的方法

如果你会cmd命令,或者称DOS命令,那么你打开命令控制台。假设我们的图片放在J:下的Faces文件夹下,可以输入如下语句:

J:\Faces\ORL>dir /b/s *.bmp > at.txt
然后你打开at.txt文件可能看到如下内容(后面的0,1..标签是自己加的):

。。。。
J:\Faces\ORL\s1\1.bmp;0
J:\Faces\ORL\s1\10.bmp;0
J:\Faces\ORL\s1\2.bmp;0
J:\Faces\ORL\s1\3.bmp;0
J:\Faces\ORL\s1\4.bmp;0
J:\Faces\ORL\s1\5.bmp;0
J:\Faces\ORL\s1\6.bmp;0
J:\Faces\ORL\s1\7.bmp;0
J:\Faces\ORL\s1\8.bmp;0
J:\Faces\ORL\s1\9.bmp;0
J:\Faces\ORL\s10\1.bmp;1
J:\Faces\ORL\s10\10.bmp;1
J:\Faces\ORL\s10\2.bmp;1
J:\Faces\ORL\s10\3.bmp;1
J:\Faces\ORL\s10\4.bmp;1
J:\Faces\ORL\s10\5.bmp;1
J:\Faces\ORL\s10\6.bmp;1
。。。。
自然还有c++编程等方法可以做得更好,看这篇文章反响,如果很多人需要,我就把这部分的代码写出来。(遍历多个文件夹,标上标签)

]

特征脸Eigenfaces

我们讲过,图像表示的问题是他的高维问题。二维灰度图像p*q大小,是一个m=qp维的向量空间,所以一个100*100像素大小的图像就是10,000维的图像空间。问题是,是不是所有的维数空间对我们来说都有用?我们可以做一个决定,如果数据有任何差异,我们可以通过寻找主元来知道主要信息。主成分分析(Principal Component Analysis,PCA)是KarlPearson (1901)独立发表的,而 Harold Hotelling (1933)把一些可能相关的变量转换成一个更小的不相关的子集。想法是,一个高维数据集经常被相关变量表示,因此只有一些的维上数据才是有意义的,包含最多的信息。PCA方法寻找数据中拥有最大方差的方向,被称为主成分。

算法描述Algorithmic Description
令 2 表示一个随机特征,其中 3 .

计算均值向量 4
5


计算协方差矩阵 S
6


计算 的特征值7 和对应的特征向量 8 9


对特征值进行递减排序,特征向量和它顺序一致. K个主成分也就是k个最大的特征值对应的特征向量。
x的K个主成份:

10其中11 .

PCA基的重构:

12其中 13 .

然后特征脸通过下面的方式进行人脸识别:

A. 把所有的训练数据投影到PCA子空间

B. 把待识别图像投影到PCA子空间

C. 找到训练数据投影后的向量和待识别图像投影后的向量最近的那个。

还有一个问题有待解决。比如我们有400张图片,每张100*100像素大小,那么PCA需要解决协方差矩阵 14的求解,而X的大小是10000*400,那么我们会得到10000*10000大小的矩阵,这需要大概0.8GB的内存。解决这个问题不容易,所以我们需要另一个计策。就是转置一下再求,特征向量不变化。文献 [Duda01]中有描述。

[gm:这个PCA还是自己搜着看吧,这里的讲的不清楚,不适合初学者看]OpenCV中使用特征脸Eigenfaces in OpenCV
给出示例程序源代码

#include "opencv2/core/core.hpp"
#include "opencv2/contrib/contrib.hpp"
#include "opencv2/highgui/highgui.hpp"

#include <iostream>
#include <fstream>
#include <sstream>

usingnamespace cv;
usingnamespace std;

static Mat norm_0_255(InputArray _src) {
Mat src = _src.getMat();
// 创建和返回一个归一化后的图像矩阵:
Mat dst;
switch(src.channels()) {
case1:
cv::normalize(_src, dst, 0,255, NORM_MINMAX, CV_8UC1);
break;
case3:
cv::normalize(_src, dst, 0,255, NORM_MINMAX, CV_8UC3);
break;
default:
src.To(dst);
break;
}
return dst;
}
//使用CSV文件去读图像和标签,主要使用stringstream和getline方法
staticvoid read_csv(const string& filename, vector<Mat>& images, vector<int>& labels, char separator =';') {
std::ifstream file(filename.c_str(), ifstream::in);
if (!file) {
string error_message ="No valid input file was given, please check the given filename.";
CV_Error(CV_StsBadArg, error_message);
}
string line, path, classlabel;
while (getline(file, line)) {
stringstream liness(line);
getline(liness, path, separator);
getline(liness, classlabel);
if(!path.empty()&&!classlabel.empty()) {
images.push_back(imread(path, 0));
labels.push_back(atoi(classlabel.c_str()));
}
}
}

int main(int argc, constchar*argv[]) {
// 检测合法的命令,显示用法
// 如果没有参数输入则退出!.
if (argc <2) {
cout <<"usage: "<< argv[0]<<" <csv.ext> <output_folder> "<< endl;
exit(1);
}
string output_folder;
if (argc ==3) {
output_folder = string(argv[2]);
}
//读取你的CSV文件路径.
string fn_csv = string(argv[1]);
// 2个容器来存放图像数据和对应的标签
vector<Mat> images;
vector<int> labels;
// 读取数据. 如果文件不合法就会出错
// 输入的文件名已经有了.
try {
read_csv(fn_csv, images, labels);
} catch (cv::Exception& e) {
cerr <<"Error opening file \""<< fn_csv <<"\". Reason: "<< e.msg << endl;
// 文件有问题,我们啥也做不了了,退出了
exit(1);
}
// 如果没有读取到足够图片,我们也得退出.
if(images.size()<=1) {
string error_message ="This demo needs at least 2 images to work. Please add more images to your data set!";
CV_Error(CV_StsError, error_message);
}
// 得到第一张照片的高度. 在下面对图像
// 变形到他们原始大小时需要
int height = images[0].rows;
// 下面的几行代码仅仅是从你的数据集中移除最后一张图片
//[gm:自然这里需要根据自己的需要修改,他这里简化了很多问题]
Mat testSample = images[images.size() -1];
int testLabel = labels[labels.size() -1];
images.pop_back();
labels.pop_back();
// 下面几行创建了一个特征脸模型用于人脸识别,
// 通过CSV文件读取的图像和标签训练它。
// T这里是一个完整的PCA变换
//如果你只想保留10个主成分,使用如下代码
// cv::createEigenFaceRecognizer(10);
//
// 如果你还希望使用置信度阈值来初始化,使用以下语句:
// cv::createEigenFaceRecognizer(10, 123.0);
//
// 如果你使用所有特征并且使用一个阈值,使用以下语句:
// cv::createEigenFaceRecognizer(0, 123.0);
//
Ptr<FaceRecognizer> model = createEigenFaceRecognizer();
model->train(images, labels);
// 下面对测试图像进行预测,predictedLabel是预测标签结果
int predictedLabel = model->predict(testSample);
//
// 还有一种调用方式,可以获取结果同时得到阈值:
// int predictedLabel = -1;
// double confidence = 0.0;
// model->predict(testSample, predictedLabel, confidence);
//
string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel);
cout << result_message << endl;
// 这里是如何获取特征脸模型的特征值的例子,使用了getMat方法:
Mat eigenvalues = model->getMat("eigenvalues");
// 同样可以获取特征向量:
Mat W = model->getMat("eigenvectors");
// 得到训练图像的均值向量
Mat mean = model->getMat("mean");
// 现实还是保存:
if(argc==2) {
imshow("mean", norm_0_255(mean.reshape(1, images[0].rows)));
} else {
imwrite(format("%s/mean.png", output_folder.c_str()), norm_0_255(mean.reshape(1, images[0].rows)));
}
// 现实还是保存特征脸:
for (int i =0; i < min(10, W.cols); i++) {
string msg = format("Eigenvalue #%d = %.5f", i, eigenvalues.at<double>(i));
cout << msg << endl;
// 得到第 #i个特征
Mat ev = W.col(i).clone();
//把它变成原始大小,为了把数据显示归一化到0~255.
Mat grayscale = norm_0_255(ev.reshape(1, height));
// 使用伪彩色来显示结果,为了更好的感受.
Mat cgrayscale;
applyColorMap(grayscale, cgrayscale, COLORMAP_JET);
// 显示或者保存:
if(argc==2) {
imshow(format("eigenface_%d", i), cgrayscale);
} else {
imwrite(format("%s/eigenface_%d.png", output_folder.c_str(), i), norm_0_255(cgrayscale));
}
}
// 在一些预测过程中,显示还是保存重建后的图像:
for(int num_components =10; num_components <300; num_components+=15) {
// 从模型中的特征向量截取一部分
Mat evs = Mat(W, Range::all(), Range(0, num_components));
Mat projection = subspaceProject(evs, mean, images[0].reshape(1,1));
Mat reconstruction = subspaceReconstruct(evs, mean, projection);
// 归一化结果,为了显示:
reconstruction = norm_0_255(reconstruction.reshape(1, images[0].rows));
// 显示或者保存:
if(argc==2) {
imshow(format("eigenface_reconstruction_%d", num_components), reconstruction);
} else {
imwrite(format("%s/eigenface_reconstruction_%d.png", output_folder.c_str(), num_components), reconstruction);
}
}
// 如果我们不是存放到文件中,就显示他,这里使用了暂定等待键盘输入:
if(argc==2) {
waitKey(0);
}
return0;
}

⑩ 有没有什么可以处理扫描电镜图片的软件

扫描电镜图片和其他任何图片一样,只要是数字图像,都可以通过图像处理软件进行编辑处理。
根据处理目的,软件可分为通用型和专业性,当然都有正版和盗版,这个你懂的!
通用型最强大的就是众所周知的PS了,最精彩的是伪彩色处理,专业术语为图像增强,提高信息衬度和丰度。
专业的软件则从定量角度提取图像信息,如下图通过立体对图像,进行三维重构,强大的数据库为基础,进而可进行表面粗糙度分析,颗粒度分析。

图像的本质可以看成傅里叶变换模型,通过特殊滤波算法,可修复图像缺陷,单纯从图像美学角度,可以无限美化,例如清晰度,但基本无法提高图像信息。

阅读全文

与伪彩色算法相关的资料

热点内容
家用编译机 浏览:547
电子加密货币最新政策 浏览:379
androidcanvas撤销 浏览:269
安卓手机怎么把图标全部下移 浏览:185
饥荒被服务器踢出怎么进 浏览:170
c编译器哪款好 浏览:732
快手宝哥发明什么app 浏览:822
张艳玲编译 浏览:66
android展开收起动画 浏览:237
linuxxz文件 浏览:160
在游戏中心里面怎么玩到解压神器 浏览:484
电脑发到手机里面照片怎么解压 浏览:74
虚拟pdf打印机64位 浏览:413
支付宝AES加密和解密 浏览:379
编译实验原理下载 浏览:131
加密防伪溯源系统私人定做 浏览:222
扫码给电动车充电的app叫什么 浏览:760
关闭命令提醒 浏览:356
云账本app服务器 浏览:499
python输入数字循环 浏览:370