数字图像处理 笔记1

来源:互联网 发布:淘宝的一千零一夜 编辑:程序博客网 时间:2024/04/27 18:06
1索引图像:

索引图像的作用就是体积小,方便传输,只需要把索引表传输过去,接收方用对应的RGB颜色表还原就行。

索引图像包括一个数据矩阵X,一个颜色映像矩阵Map。其中Map是一个包含三列、若干行的数据阵列,其中每个元素的值均为[0, 1]之间的双精度浮点型数据。Map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。在MATLAB中,索引图像是从像素值到颜色映射表值的“直接映射”。像素颜色由数据矩阵X作为索引指向矩阵Map进行索引,例如,值1指向矩阵Map中的第一行,值2指向第二行,以此类推

 

map里储存的是颜色索引,就是一张各个数字对应颜色的表格。
如果bmp文件是真彩色或灰度的,不需要色表,得到的p是二维或三维的矩阵,数值介于0到255之间。如果是索引格式的(如256色、16色等等)就有这样一张表格,p是一个二维矩阵,数值介于0-255或0-15之间,显示图像时需要色表才能正确对应颜色

类型转换:(1)如果你原来的数值是uint8,在运算中转换为double后,实际要显示的数值没有改变的话,只要用uint8(X)就可转换为uint8型,如果不想转换频繁,也可在显示时用X/255来转换为符合0-1double类型范围要求的数值显示。(2)如果显示索引图像(二维矩阵),如果索引图像像素数值是double型,则它的取值范围为1-length(colormap),数值起点为1,则矩阵中数值为1的对应colormap中第一行数据,如果索引图像像素数值是uint8,则取值范围为0-255,数值起点为0,则矩阵中数值为0的对应colormap中第一行数据,所以索引图像这两个数据类型之间的转换,要考虑到+1或-1。直接用uint8或double转换则会查找移位,产生失真情况

 

 

2在MATLAB中,默认的保存类型是uint8。Filename表示的文件名必须在MATLAB的搜索路径范围内,否则需指出其完整路径。

3元胞数组建立:1元胞索引2元胞内容索引:

4图像傅里叶变换

1、先在matlab安装目录下“work”文件夹里放置一个3.bmp灰度图文件,注意必须是灰度图文件,如果不是,可以用photoshop进行转换;2、打开matlab后将本程序段直接复制到matlab 的“command window”里面的">>"后即可进行图片的傅立叶变换 %读入图像 [X, map] = imread('3.bmp'); %做fft变换,同时将零点移到中心 fcoef = fft2(X); spectrum = fftshift(abs(fcoef)); %为了显示图像,需要对幅值做归一化处理 figure; colormap(gray); spectrum = 255*spectrum/max(spectrum(:)); %显示频谱,同时保存图像。 imshow(spectrum); imwrite(255*spectrum, map, '31.bmp','bmp');

 

根据频域的知识可以知道,信号时域相关,在频域对应的为其一的傅里叶变换取共轭后于另外一个信号的傅里叶变换进行乘积操作,因此,时域相关的计算,有了频域相乘这个简单的算法

0 0
原创粉丝点击