1、图像深度是指存储每个像素所用的位数,真彩色为24位。3X8=RGB
也用于量度图像的色彩分辨率.图像深度确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数.它决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大灰度等级.比如一幅单色图像,若每个象素有8位,则最大灰度数目为2的8次方,即256.一幅彩色图像RGB3个分量的象素位数分别为4,4,2,则最大颜色数目为2的4+4+2次方,即1024,就是说像素的深度为10位,每个像素可以是1024种颜色中的一种.
例如:一幅画的尺寸是1024*768,深度为16,则它的数据量为1.5M。计算如下:1024*768*16bit=(1024*768*16)/8字节=[(1024*768*16)/8]/1024KB={[(1024*768*16)/8]/1024}/1024MB。
具有全彩色照片表达能力的图像为24 位彩色图像,由于彩色的种类很多,每个像素需要24 为,。使得彩色图像所需要的存储空间很大。图像处理时一般要转换为灰度图像。
因为自然界中所有的颜色都可以用RGB三种颜色波长的不同强度组合而得,这就是人们常说的三基色原理。
彩色空间的不同方式转换;==========不同彩色空间之间是可以相互转换的。【转换公式】===
2、彩色图像的灰度化处理;
http://wenku.baidu.com/view/70ced19851e79b89680226bc.html
如果原来的彩色图像是800×600×3的话,变成灰度图像就变成800×600了,类型都是uint8 的,也就是无符号八位整数,0到255。 MATLAB的话,用rgb2gray函数可以转换,三个分量转成一个分量是以0.2989 * R + 0.5870 * G + 0.1140 * B的比例转换。
==========加权平均化点的得到较合理的灰度图像。
可以看出的是,G分量占的比例最大,有时可以直接使用G值作为转换后的图像。
这是因为人眼对绿色最敏感,蓝色敏感最低的原因。视为适合人的观察而设置的参数如此。
3、彩色图像的特效处理;通过空间域数字点的运算
a,逆反处理;对像素值取反 =======255 ----- (R,G,B,)
b , 曝光处理;逆转小于某一阈值T的RGB值,高于阈值的RGB不发生变化,注意阈值T的选择。
c, 扩散处理;从当前像素周围5X5相邻的像素中随机的rand(5)任一选择一个值作为当前像素的值。从而使这一小区域内的值发生未知变化。
d ,马赛克处理;模糊化处理过程,使图像每一小块矩阵内的所有像素值都取像素值和的平均值。
e ,平滑处理,1、邻域平均法和2、线性平滑滤波。
C++算法实现;
1、取得图像文件的拷贝文件。
2、开辟一个临时的缓冲区。
3、取得图像的数据区指针,得到前点及周围8个点的RGB的对应值;
4、将对应的RGB三个分量分别和在平均。
5、把得到的新的像素值RGB存放到对应的临时缓冲区;
6、再把缓冲区中的数据返回,否该拷贝文件的数据区;
7,删除临时缓冲区,
8、显示图像。
f,图像的锐化处理;===========边缘检测。【利用原图像得出边界,但不改变原始数据,对边界分析】!!!!!!!!!!!
1、水平增强 2、垂直增强 3、双向增强 4、梯度锐化 5、高通滤波器 6、浮雕处理 7、霓虹处理,,,,,
http://www.cnblogs.com/Wiseman/archive/2007/06/09/69701.html?page=4
============================================================================================================
由于图片的噪音是一些孤立的点,这些点与它周围点的灰度相差很大,
于是在图片显示出来的效果很突出,于是以上的程序采样平均法滤波。
原理是把图片上的点都与它周围的点的灰度平均值比较,如果这个点的灰度与平均值相差很大,【如何界定差值相对较大的阈值T】就被认为是孤立点,于是用灰度平均值代替这个点的灰度;如果它们相差很少,就不认为是孤立点,不改变原来点的灰度。比如,一个点A的灰度值为122,它周围点的灰度如下:
142 |
156 |
135 |
138 |
122 |
146 |
135 |
198 |
231 |
于是A点周围的平均值为
(142+156+135+138+135+198+231+146+135)÷8=160.25
取整后为160,于是发现160-122=38。
由于经过多次的实验和反复的尝试,我们发现平均值与中间点灰度相差9的时候,图片能去掉所有的孤立点,并且零件图像不会损失,于是决定把相差值定为9。而38>9,于是上面A点的灰度应该是160,而不是122。
【但是,如何做到对不同图样的统一化标准】???????????
图像的合成;Matlab中的各种逻辑运算方式求解。
加法:C=A+B去除叠加噪音生成叠加效果
减法:C=A-B去除叠加图案检测同一场景中的图像变化
乘法:C=A*B图像的局部显示
求反:~A获得负像获得子图像的补图像
异或:A⊙B获得相交图像
clear all
A=imread('clev1.bmp');
B=imread('clev2.bmp');
figure('Name','原始图像') %创建图像窗口%
subplot(1,2,1) %拆分窗口%
imshow(A);title('原始A'); %显示指定工作区图像%
colorbar %添加色度条%
subplot(1,2,2)
imshow(B);title('原始B');
colorbar
figure('Name','图像算数运算')
res1=imadd(A,B); %A+B%
res2=imsubtract(A,B); %A-B%
res2_2=imsubtract(B,A); %B-A%
res3=immultiply(A,B); %A*B%
res4=imdivide(A,B); %A/B%
res4_2=imdivide(B,A); %B/A%
subplot(2,3,1)
imshow(res1);title('A加B');
subplot(2,3,2)
imshow(res2);title('A减B');
subplot(2,3,3)
imshow(res2_2);title('B减A');
subplot(2,3,4)
imshow(res3);title('A乘B');
subplot(2,3,5)
imshow(res4);title('A除B');
subplot(2,3,6)
imshow(res4_2);title('B除A');
C=A(:,:,1); %取单色%
D=B(:,:,1);
figure('Name','图像逻辑运算')
res1=C&D; %C&D%
res2=C|D; %C|D%
res3=xor(C,D); %xor C D%
res3_2=xor(D,C) %xor D C%
res4=not(C)¬(D); %~C%
res4_2=not(C)|not(D); %~D%
subplot(2,3,1)
imshow(res1);title('C&D');
subplot(2,3,2)
imshow(res2);title('C|D');
subplot(2,3,3)
imshow(res3);title('xor C D');
subplot(2,3,4)
imshow(res3_2);title('xor D C');
subplot(2,3,5)
imshow(res4);title('~C&~D');
subplot(2,3,6)
imshow(res4_2);title('~C|~D');
(自制两幅色阶图片上半部分相同,下部不同,黑色块用于逻辑运算时显示计算效果)
===============================================================================Matlab 基础部分:(图像) 读取 储存 显示 矩阵 信息
1. Matlab中图像的基本操作和处理
图像读取函数:imread()
将图像文件读入工作区A = imread(filename, fmt)
实例:a=imread('P:\color1.jpg');
图像存储函数:imwrite()
将工作区数据写入标准图像文件imwrite(A,filename,fmt)
实例:imwrite(a,'file.bmp','bmp')
显示图像函数:imshow()
根据工作区数据格式显示为指定范围图像imshow(I,[low high])
实例:imshow(a,[1 20])
图像函数:image()
将工作区数据显示为坐标属性图像image(x,y,C,'PropertyName',PropertyValue,...)
实例:image(1000,500,a)
矩阵尺寸函数:size()
获取工作区矩阵尺寸
实例:[m n]=size(a)
信息:whos
获取记录信息log.whos('all')
M文件操作:save/load
存储到Mat文件
Matlab 图像格式的转换
灰度图像与索引图像的相互转换:gray2ind( ) ind2gray( )
RGB图像与灰度图像的转换:rgb2gray( )
二进制图像转换:BW=im2bw()
程序和图像
clear all;
RGB=imread('s.jpg'); %要求输入为3色 uint8阵列图像 所以采用JPG图片%
[X,MAP]=rgb2ind(RGB,128); %RGB转索引 128色%
I=rgb2gray(RGB); %RGB转灰度%
BW=im2bw(RGB,0.5); %RGB转二色 阈值0.5 %
iRGB=ind2rgb(X,MAP); %索引转RGB%
iI=ind2gray(X,MAP); %索引转灰度%
iBW=im2bw(X,MAP,0.5); %索引转二色%
[x2,map2]=gray2ind(I,128); %灰度转索引 128色%
gBW=im2bw(I,0.5); %灰度转二色%
figure('Name','图像转换') %创建图像窗口%
subplot(3,3,1) %拆分窗口%
imshow(RGB);title('原始'); %显示指定工作区图像%
colorbar %添加色度条%
subplot(3,3,5)
imshow(I);title('RGB->灰度');
colorbar
subplot(3,3,6)
imshow(BW);title('RGB->二进制');
colorbar
subplot(3,3,7)
imshow(iRGB);title('索引->RGB');
colorbar
subplot(3,3,8)
imshow(iI);title('索引->灰度');
colorbar
subplot(3,3,9)
imshow(iBW);title('索引->二进制');
colorbar
subplot(3,3,2)
imshow(x2,map2);
title('灰度->索引');
colorbar
subplot(3,3,3)
imshow(gBW);title('灰度->二进制');
colorbar
figure('Name','图像转换2') % figure中存在多个颜色表不能正常显示 单独显示%
subplot(3,3,4);
imshow(X,MAP);
title('RGB->128索引');
colorbar