一、基础部分
clear all, close all;
I = cell(1, 4);
for i = 1 : 4 %%连续读入4副图并显示灰度值
yuantu = strcat(num2str(i), '.bmp');%yuantu是一个公共变量会不停的被下一张图片信息覆盖最后是最后一张图片的信息
I = imread(yuantu);%I{1}。。。I{5}就是每一张图片的空间
I1 = imread(yuantu);
%subplot(m,n,p),m和n代表在一个图像窗口中显示m行n列个图像,后面的p代表现在选定第p个图像区域,即在第p个区域作图。
%imhist(I); %输出灰度直方图
A=find(I>90);
I(A)=255; %灰度分割
figure(1), subplot(4,1,i); imhist(I); title(['灰度直方图(',num2str(i),')']); %将生成的四个灰度直方图按从上到下的顺序摆在figure里
imwrite(I,['去阴影145(',num2str(i),').bmp']);%生成一张新照片
figure, imshow(I1,I); title(['去阴影(',num2str(i),')']); %将原图和处理后的图生成在一个figure框中
end
灰度级 :1像素=8bit,有(0-255)位,0为黑,255为白,128左右为灰
1. 图像的读入和显示:
(1)图像读入:I=imread('文件名.文件格式 ' );[X,map]=imread('文件名') %X代表索引图像矩阵,map为颜色映射表
(2)图像显示:imshow(I);
clear,close all %清除内存,关掉图形界面
I = inread('pout.tif'); %读格式为tif,名为pout的照片
imshow(I); %show显示
2. 图像写回
A=imwrite('文件名',文件格式)[X,map]=imwrite('文件名')%注意,当只写文件名时,它应带有扩展名
3.获取图像信息
1)变量名=iminfo('文件名.文件格式') %信息显示在命令行窗口
Eg:a=imfinfo('灰度值扩大法结果图(1).bmp')
2)imageinfo('文件名.格式'); %单独出现一个对话框显示图片相关信息
注:通过图像信息中的colorType可以判断图像类型:
Indexed:索引图像
Truecolor:彩色图像
灰度图像
二值图像
3)图像工具
imtool('文件名.格式名')
4.标准图像显示技术
(1)imshow(I,n)%显示灰度图像,n为灰度级数(2)imshow(I,[low,high])%[low,high]为图像数据的值域(可为空[ ])
(3)imshow(BW)%显示二值图像
(4)imshow(X,map)%显示索引色图像
5.图像的运算
(1)Z=imadd(X,Y)%图像的加运算,X,Y是输入的两幅图像,其中一个可以是常数(2)Z=imsubtract(X,Y)%图像的减运算,Y可以是常数
(3)Z=immiltiply(X,y)%图像的乘运算,Y也可以是常数
(4)Z=imdivide(X,y)%图像的除运算,Y也可以是常数
6.图像的类型转换
(1)RGB=ind2rgb(X,map)%索引图转换为真彩色图(2)I=mat2gray(A)%将一个数据矩阵转换为灰度图
(3)I=rgb2gray(RGB)%将一副灰度图转换为真彩色图
(4)[X,map]=rgb2ind(RGB,n)%将RGB图转换为索引色图
(5)BW=im2bw(I,level)%将真彩色图或灰度图转换为二值图,level为阈值
BW=im2bw(X,map,level)%将索引色图转换为二值图
(6)I=ind2gray(X,map)%将索引色图转换为灰度图
7.傅里叶变换
(1)Y=fft2(x,m,n)%二维离散傅里叶快速变换,x为要进行傅里叶变换的矩阵,m、n是返回的变换矩阵Y的行数和列数。(2)Y=ifft2(x,m,n)%二维离散傅里叶反变换
(3)Y1=fftshift(Y)%把傅里叶变换操作得到的结果中零频率成分移到矩阵中心,这样利于观察频谱。
8.离散余弦变换
(1)D=dct2(A,m,n)%二维离散余弦变换,A是输入图像,B是返回的DCT变换系数,m、n为D的行数和列数(2)D=idct(A,m,n)%e二维离散余弦逆变换。
(3)D=dctmtx(n)%返回DCT变换矩阵
9.Radon变换
[R,xp]=radon(I,theta)%I为图像矩阵,theta为角度I=iradon(R,thrta)%逆Radon变换
10.图像的增强(1)
(1)imhist(I)%显示一副图像的直方图(2)J=histeq(I)%直方图均衡化
(3)J=imadjust(I,[low_in;high_in],[low_out;high_out],gamma)%调整图像灰度值
(4)J=adapthisteq(I)%有限对比自适应直方图均衡化
(5)S=decorrestretch(I)%去相关色度拉伸
11.图像的四则运算
(1)乘:immultiply();提亮图片,亮的地方更亮,暗的地方亮的有限
clear all, close all; %清理缓存,关闭之前打开的figure框
I=imread('1.bmp');
subplot(1,2,1); %subplot(m,n,p),m和n代表在一个图像窗口中显示m行n列个图像,后面的p代表现在选定第p个图像区域,即在第p个区域作图。
imshow(I);
J=immultiply(I, 1.5); %将I的像素扩大1.5倍后给J
subplot(1,2,2);
imshow(J);
(2)加:imadd();相加的图片大小要相同,会使图片变亮