图像类型的转换
抖动算法 dither
将RGB图像抖动成索引图像
li=imread('E:\a_matlab_file\picture\***.jpg');
map=pink(512);
x=dither(li,map);
subplot(1,2,1);
imshow(li);
title('原始图像');
subplot(1,2,2);
imshow(x,map);
title('抖动成索引图像');
可通过**colormap()**对颜色进行更改
% 输出当前所使用的颜色三维矩阵
disp(colormap(map));
% 更换一种颜色
cmap=colormap('Jet');
截取的部分当前所使用的map 颜色矩阵
colormap:matlab中自带了许多选项,可通过编辑查看
选中Figure1中的编辑,然后选择图像属性,
li=imread('E:\a_matlab_file\picture\***.jpg');
map=pink(512);
x=dither(li,map);
subplot(1,3,1);
imshow(li);
title('原始图像');
subplot(1,3,2);
imshow(x,map);
title('抖动成索引图像');
disp(colormap(map));
cmap=colormap('Jet');
y=dither(li,cmap);
subplot(1,3,3);
imshow(y,cmap);
title('再次抖动成索引图像');
dither函数将灰度图像抖动成二值图像
i=imread('E:\a_matlab_file\rgb2gray.jpg');
BW=dither(i);
subplot(1,2,1);
imshow(i);
title('原始图像');
subplot(1,2,2);
imshow(BW);
title('二值图像');
将数据矩阵转换成灰度图像 mat2gray()
filter2() B为滤波器.X为要滤波的数据,这里将B放在X上,一个一个移动进行模板滤波.
i=imread('pout.tif');
A=filter2(fspecial('sobel'),i);
J=mat2gray(A);
subplot(1,2,1);
subimage(A);
title('原始图像');
subplot(1,2,2);
subimage(J);
title('转换为灰度图像');
% imresize()对图像实现缩放
i=imread('E:\a_matlab_file\picture\***.jpg');
J=imresize(l,0.5);
subplot(2,2,1);imshow(l);
title('原始图像');
disp('图像放大,最近邻插值法运算时间:');
tic
J1=imresize(J,8,'nearest');
toc
subplot(2,2,2);imshow(J1);
title('图像放大,最近邻插值')
disp('图像放大,双线性插值法运算时间');
tic
J2=imresize(J,8,'bilinear');
toc
subplot(2,2,3);imshow(J2);
title('图像放大,双线性插值')
disp('图像放大,双立方插值法运算时间');
tic
J3=imresize(J,8,'bicubic');
toc
subplot(2,2,4);imshow(J3);
title('图像放大,双立方插值');
help imresize();
图像的裁剪
手动裁剪
[x,map]=imread('E:\a_matlab_file\picture\***.jpg');
figure;imshow(x,map);
I2=imcrop(x,map);
figure;imshow(I2);
选中所要裁剪的地方,然后双击即可获取
固定自动裁剪
l=imread('***.jpg');
l2=imcrop(l,[50 80 80 112]);
figure;imshow(l),
title('原始图像');
figure;imshow(l2)
title('剪切图像');
图像的旋转
A=imread('E:\a_matlab_file\picture\三食堂片刻一角.jpg');
J1=imrotate(A,60);
J2=imrotate(A,-30);
J3=imrotate(A,60,'bicubic','crop');
J4=imrotate(A,30,'bicubic','loose');
figure;
subplot(221),imshow(J1);
title('逆时针旋转60度');
subplot(222),imshow(J2);
title('顺时针旋转30度');
subplot(223),imshow(J3);
title('裁剪的旋转');
subplot(224),imshow(J4);
title('不裁剪的旋转');
将索引图像转换为灰度函数
ind2gray()
load trees
subplot(1,2,1);
imshow(X,map);
l=ind2gray(X,map);
title('原始图像');
subplot(1,2,2);
imshow(l);
title('灰度图像');
将索引图像转换成RGB图像
% ind2rgb()
[l,map]=imread('m83.tif');
X=ind2rgb(l,map);
subplot(1,2,1);
imshow(l,map);
title('原始图像');
subplot(1,2,2);
imshow(X);
title('RGB图像');
RGB图像转换为灰度图像
RGB=imread('E:\a_matlab_file\picture\sky.jpeg');
X=rgb2gray(RGB);
subplot(1,2,1);
imshow(RGB);
title('原始图像');
subplot(1,2,2);
imshow(X);
title('灰度图像');
将灰色图像写入当前文件夹
RGB=imread('E:\a_matlab_file\picture\sky.jpeg');
X=rgb2gray(RGB);
imshow(X);
imwrite(X,'rgb2gray.jpg');
灰度图像转换成索引图像
i=imread('cell.tif');
[X,map]=gray2ind(i,32);
subplot(1,2,1);
imshow(i);
title('原始图像');
subplot(1,2,2);
imshow(X,map);
title('索引图像');
i=imread('E:\a_matlab_file\picture\sky.jpeg');
[X,map]=gray2ind(i,64); %32--->64--->255
figure,
subplot(1,2,1);
imshow(i);
title('原始图像');
subplot(1,2,2);
根据gray2ind(n)的值不同,所显示的索引图像灰度级不同,值越大,灰度级越小
设定阈值将灰度图像转换成索引图像
% grayslice()
% grayslice(I,n)、grayslice(I,v)
% n为将灰度图像均匀量化为n个等级
% v是阈值矢量,按照v对图像进行阈值划分
i=imread('tire.tif');
X2=grayslice(i,251); %8->100->200->251
figure,
subplot(1,2,1);
subimage(i);
title('原始图像');
subplot(1,2,2);
subimage(X2);
title('索引图像');
转换为二值图像
i=imread('E:\a_matlab_file\picture\sky.jpeg');
X=im2bw(i,0.5);
subplot(1,2,1);
imshow(i);
title('原始图像');
subplot(1,2,2);
imshow(X);
title('二值图像');
根据值设置的不同,所显示的二值图像也不同