图形学-灰度变换_第1页
图形学-灰度变换_第2页
图形学-灰度变换_第3页
图形学-灰度变换_第4页
图形学-灰度变换_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图形学灰度变换 Photoshop里的灰度变换可以使R,G,B 3色按任何比例增强再混合,原理和下面的差不多。黑白图片的黑白变换叫灰度变换,彩色图片的色彩变换也叫灰度变换,PhotoShop里叫色阶变换一幅彩色图像的象素矩阵中每个象素由RGB 3种颜色按一定的比例混合形成一种颜色来表示,比如黑色使RGB(0,0,0) ,纯红色是RGB(0,1,0).。在处理相片时,有时可能因为环境光源太暗,使RGB色的值偏小,就会使图形太暗看不清,如果环境光源太光,又使图像泛白,通过灰度变换,就可以使RGB值调和到合适的程度,使相片变得漂亮。变换原理是这样的:首先提取一幅图像的一个象素,在BMP格式中一个象素

2、由8位红色亮度值,8位绿色亮度值和8位蓝色亮度值组成,只要按一定的变换函数去变换这种3种颜色的亮度值就可以起到灰度变换的目的。比如线性变换可以用一个线性函数 f(x,y)=a+(b-a)/(b-a)(f(x,y)-a)f(x,y)代表一个象素a,b是原始图像的灰度范围,a,b是变换后新图像的灰度范围用这个线性函数分别对R,G,B分量进行变换可以起到单色增强的目的,然后再混合输出。如果b-a b-a ,则使得图像灰度范围增大,即对比度增大,图像会变得清晰如果b-a b-a ,则使得图像灰度范围缩小,即对比度减小。分段线性变换和线性变换差不多不过对于单一一个R或G或B分量采用分段函数进行变换。如f

3、(x,y)=a+(b-a)/(b-a)(f(x,y)-a) 当f(x,y)在a,b范围内f(x,y)=0 当f(x,y)n这样就指定了一个变换段 a,b,只有灰度在a,b段内的点才会增强,灰度b的变成白色。非线性变换可以根据需要制定非线性函数对灰度进行变换,典型的有 对数变换f(x,y)=a+ lnf(x,y)+1/(blnc) 这里a,b,c是参数而不是灰度范围了,对数变换用于扩展低灰度区指数变换f(x,y)=b(c*f(x,y)-a) ,a,b,c同样是参数,指数变换用来压缩低灰度区下面用BCB实现一个对256色无压缩BMP图像的灰度变换/-BCB6程序-#include #pragma

4、hdrstop#include#include Unit1.h#includeFile1.h#pragma pack(1)/-强制结构用1字节对齐struct BITMAPFILEHEADER_short type; int bfSize;short re1,re2; int Offbits;struct BITMAPINFO_long size;long width,height;short planes,bitCount;long comp,sizeImg;long xpels,ypels;long used,important;/-将BMP彩色表的数据校正到BCB TColor的数据。v

5、oid SwitchColor(long &c) long blue=c& 0x000000ff; long green=c& 0x0000ff00; long red=c& 0x00ff0000; c=(blue16);/-线性灰度变换,rr,gg,bb为增强系数void strengthen (long &c,double rr,double gg,double bb) unsigned char r=(c & 0x00ff0000)16; unsigned char g=(c & 0x0000ff00)8; unsigned char b=(c & 0x000000ff); unsign

6、ed char nr; unsigned char ng; unsigned char nb; if(rr*r255) nr=255; else nr=rr*r; if(gg*g255) ng=255; else ng=gg*g; if(bb*b255) nb=255; else nb=bb*b; c=(nr16) | (ngOffbits-sizeof(BITMAPFILEHEADER_)-sizeof(BITMAPINFO_); fread(char*)c,bmph-Offbits-sizeof(BITMAPFILEHEADER_)-sizeof(BITMAPINFO_),1,f); /-

7、显示一些信息 Form1-Edit1-Text=IntToStr(bmph-bfSize); Form1-Edit2-Text=IntToStr(bmpi-width); Form1-Edit3-Text=IntToStr(bmpi-height); Form1-Edit4-Text=IntToStr(bmpi-comp); Form1-Edit5-Text=IntToStr(bmpi-used); /-显示图形 unsigned char *p=new unsigned char4; int i=0,j=0,k=0,wc=0; TColor *tc; if(bmpi-width%4=0)/-因为BMP图像4字节对齐 wc=bmpi-width/4; else wc=bmpi-width/4+1; for( i=0;iheight;i+) for(j=0;jwc;j+) fread(p,4,1,f); for(k=0;kCanvas-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论