4月 142013
 

Your ads will be inserted here by

Easy AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

一、读取图像

im = imread(‘filename’)

读取灰度图像

一个8位的灰度图像的每一个像素只有一个字节来记录,所在调用imread后返回的结果是一个uint8型的二维数组,第一维代表的是行,第二维代表的是列。

im = imread(‘filename’)

读取RGB图像

RGB图像由于有三个通道的信息,返回的是uint8型的三维数组,其中第一维代表的是行,第二维代表的是列,第三维代表的是一个颜色通道,对于RGB来说,第三维的大小一定为3,可以通过(:, :, 1)来取出红色通道的颜色信息,(:, :, 2)是绿色通道。调用格式和灰度图像相同,都是:

im = imread(‘filename’)

调用imfinfo函数来观察图像的信息

imfinfo(‘filename’)

二、图像类型转

真彩图像→索引图像

X=dither(RGB,map)

节省存储空间,假彩色

索引图像→真彩图像

RGB=ind2rgb(X,map)

便于图像处理

真彩图像→灰度图像

I=rgb2gray(RGB)

得到亮度分布

真彩图像→二值图像

BW=im2bw(RGB,level)

阈值处理,筛选

索引图像→灰度图像

I=ind2gray(X,map)

Newmap=rgb2gray(map)

得到亮度分布

灰度图像→索引图像

[X,map]=gray2ind(I,n),

X=grayslice(I,n)

X=grayslice(I,v)

伪彩色处理

灰度图像→二值图像

BW=dither(I)

BW=im2bw(I,level)

阈值处理,筛选

索引图像→二值图像

BW=im2bw(X,map,level)

阈值处理,筛选

Your ads will be inserted here by

Easy AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

数据矩阵→灰度图像

I=mat2gray(A,[max,min])

I=mat2gray(A)

产生图像

y = ind2gray(x, map); %索引图像转换为灰度图像

[y, map] = gray2ind(x); %灰度图像转换为索引图像

y = rgb2gray(x); %RGB图像转换为灰度图像

[y, map] = rgb2ind(x, n); %RGB图像转换为索引图像

y = ind2rgb(x, map); %索引图像转换为RGB图像

三、图像存储imwrite

imwrite(im, ‘filename’, ‘format’);

format 可以为PNG,BMP,GIF

索引图像

imwrite(im, immap, ‘filename’, ‘format’);

四、图像显示

1、image

image是最原始的显示图像的函数,对于灰度图像

image(im), truesize, axis off, colormap(gray(256));

这里truesize显示图像和实际大小相同,axis off去掉了坐标轴,gray(256)是将0到1之间分出256个不同的灰度,正好对应的灰度图像的范围

如果是彩色图像,就不需要colormap这个参数了,直接调用image即可正常显示。

2、imshow

imshow也可以用来显示图像,如果传入数据是原始的uint8类型的,不管是灰度图像和RGB图像都可以直接正常显示。不过如果将数据直接转为double类型,图像就无法正常显示,因为当传入double类型的时候,函数会认为0代表黑,1.0代表白,所以一般情况下这种错误操作很可能显示一幅全白图像。

为了避免自己转换类型出错,可以使用im2double或im2uint8函数,这样不管数据范围是0到255还是0到1都可以正确地进行数据转换。

im = imread(‘cameraman.tif’);

subplot(1, 3, 1);

imshow(im);

subplot(1, 3, 2);

imshow(im2double(im));

subplot(1, 3, 3);

imshow(im2double(double(im) / 256));

五、图像的缩放imresize

利用imresize(im, scale, method)或imresize(im, [row col], method)

method控制的就是插值的方法:bicubic  bilinear  nearest

六、点处理Point Processing

1、算术操作 Arithmetic operations

主要是加减乘除处理

im = imread(‘lena.jpg’);
im1 =imadd(im,128);
im2 = imsubtract(im,128);
im3 = immultiply(im,2);
im4 = imdivide(im,2);
subplot(2, 2, 1);
imshow(im1);
title(‘Add’);
subplot(2, 2, 2);
imshow(im2);
title(‘Subtract’);
subplot(2, 2, 3);
imshow(im3);
title(‘Multiply’);
subplot(2, 2, 4);
imshow(im4);
title(‘Divide’);

颜色反转 imcomplement

imcomplement(im);

2、直方图 Histograms

imhist(im),axis tight;

注意必须是灰度图,否则会报错

2.1直方图拉伸 Histogram Stretching

imadjust(im, [a, b], , gamma)

gamma不写默认值为1,[a, b]是要拉伸的范围,是拉伸后的范围,a、b、c、d均为0到1之间的double类型的数字

 

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)