MATLAB图像处理实例详解

MATLAB图像处理实例详解
MATLAB图像处理实例详解

MATLAB 图像处理实例详解

——程序部分

目录

第2章 MATLAB基础 (1)

第3章 MATLAB图像处理基础 (11)

第4章数字图像的运算 (18)

第5章图像增强技术 (33)

第6章图像复原技术 (39)

第7章图像分割技术 (44)

第8章图像变换技术 (46)

第9章彩色图像处理 (54)

第10章图像压缩编码 (55)

第11章图像特征分析 (69)

第12章形态学图像处理 (103)

第13章小波在图像处理中的应用 (106)

第14章基于SIMULINK的视频和图像处理 (117)

第15章图像处理的MATLAB实例 (120)

第2章 MATLAB基础

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=240;

B1=int8(A); %将A进行强制类型转换为8位有符号整数

B2=int16(A); %将A进行强制类型转换为16位有符号整数

B3=uint8(A); %将A进行强制类型转换为8位无符号整数

B4=uint16(A); %将A进行强制类型转换为16位无符号整数

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=123.567;

B=single(A); %将双精度浮点型转换为单精度浮点型

C=int16(A); %将双精度浮点型转换为16位有符号整型

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A1=round(-1.9); %应用round( )函数对浮点数取整

A2=round(3.4);

B1=fix(-1.9); %应用fix( )函数对浮点数取整

B2=fix(3.4);

C1=floor(-1.9); %应用floor( )函数对浮点数取整

C2=floor(3.4);

D1=ceil(-1.9); %应用ceil( )函数对浮点数取整

D2=ceil(3.4);

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行S='Please create a string!'; %创建字符串

[m,n]=size(S); %计算字符串大小

a=double(S); %计算字符串的ASCII码

S1=lower(S); %将所有字母转换成小写字母

S2=upper(S); %将所有字母转换成大写字母

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行S1='How are you! '; %创建S1字符串

S2='Fine, Thank you!'; %创建S2字符串

A=[S1,S2]; %合并字符数组

B=char(S1,S2); %连接字符串S1和S2

C=strcat(S1,S2); %横向连接字符串S1和S2

D=strvcat(S1,S2); %纵向连接字符串S1和S2

E=S2(7:16); %拆分截取字符串S2

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行S1='My name is Tommy';

S2='Nice to meet you';

a=S1==S2; %判断两个字符串是否相等

b=S1>S2; %判断S1是否大于S2

c=lt(S1,S2); %应用函数判断S1是否小于S2

d=S1

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行S1='Good morning!';

S2='good morning, Sir.';

a=strcmp(S1,S2); %比较两个字符串大小

b=strncmp(S1,S2,7); %比较两个字符串前7个字符大小,区分大小写

c=strncmpi(S1,S2,7); %比较两个字符串前7个字符大小,不区分大小写

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行num=rand(3,3); %产生3×3随机矩阵

s1=num2str(num); %将数值转换成字符串

s2=num2str(pi,10); %将pi的前10位转换成字符串

int=12345;

s3=int2str(int); %将整数转换成字符串

s4=mat2str(pascal(3)); %将矩阵转换成字符串

num1=str2num('123456'); %将字符串转换成数值

num2=str2double('1234.56'); %将字符串转换成双精度浮点数

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行a=bin2dec('1011001'); %将二进制数转换成十进制数

b=dec2bin(18); %将十进制数转换成二进制数

c=hex2dec('9A2B'); %将十六进制数转换成十进制数

d=dec2hex(97); %将十进制数转换成十六进制数

e=base2dec('212',3); %将任意进制数转换成十进制数

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行s = 'Find the starting indices of the shorter string.';

a1=findstr(s, 'the'); %在长字符串中查找短字符串

a2=findstr('the', s);

a3=findstr(s,'a');

a4=findstr(s,' ');

a5=strfind(s, 'the'); %在前字符串中查找后字符串

a6=strfind(s, 'a');

a7=strfind('the',s);

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行s1 = 'This is a good example.';

s2=strrep(s1, 'good', 'great'); %在在符串中查找good用great替换

s3=strrep(s1,'Good','great');

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=[0 0 1;2 0 0;0 3 0];

B=logical(A); %将矩阵A转换成逻辑矩阵B

C=true(3); %生成3阶逻辑真矩阵

D=false(3); %生成3阶逻辑假矩阵

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行fhandle=@sin; %建立一个函数句柄

y1=fhandle(2*pi); %用函数句柄调用函数

y2=sin(2*pi); %直接调用函数

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行f1=@help; %创建函数句柄

s1=func2str(f1); %将函数句柄转换成字符串

f2=str2func('help'); %将字符串转换成函数句柄

a1=isa(f1,'function_handle'); %判断f1是否为函数句柄

a2=isequal(f1,f2); %判断f1和f2是否指向同一函数

a3=functions(f1); %获取f1信息

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行stu(1).name='LiMing'; %直接创建结构体stu

stu(1).number='20120101';

stu(1).sex='f';

stu(1).age=20;

stu(2).name='WangHong';

stu(2).number='20120102';

stu(2).sex='m';

stu(2).age=19;

student=struct('name',{'LiMing','WangHong'},'number',{'20120101','20120102'},'sex',{'f','m' },'age ',{20,19}); %应用struct函数创建结构体student

stu;

stu(1);

stu(2);

student;

student(1);

student(2);

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行stu=struct('name',{'LiMing','WangHong'},'number',{'20120101','20120102'},'sex',{'f','m' },'age',{20 ,19});

a=fieldnames(stu); %获取stu所有成员名

b=getfield(stu,{1,2},'name'); %获取指定成员内容

c=isfield(stu,'sex'); %判断sex是否为stu中成员

stunew=orderfields(stu); %按结构体成员首字母重新排序

rmfield(stu,'sex'); %删除sex

s1=setfield(stu(1,1),'sex','M'); %重新设置stu中sex内容

s2=setfield(stu{1,2},'sex','F'); %重新设置stu中sex内容

s2(1,2)

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行student{1,1}={'LiMing','WangHong'};%直接赋值法建立细胞数组

student{1,2}={'20120101','20120102'};

student{2,1}={'f','m'};

student{2,2}={20,19};

student;

student{1,1};

student{2,2};

cellplot(student); %显示细胞数组结构图

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行stu=cell(2); %cell函数建立2×2细胞数组

stu{1,1}={'LiMing','WangHong'};

stu{1,2}={'20120101','20120102'};

stu{2,1}={'f','m'};

stu{2,2}={20,19};

stu;

cellplot(stu) %显示细胞数组结构图

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行stu_cell={'LiMing','20120101','M','20'}; %建立细胞数组

celldisp(stu_cell) %显示细胞数组

fields={'name','number','sex','age'};

stu_struct=cell2struct(stu_cell,fields,2); %将细胞数组转换成结构体

stu_struct;

a=iscell(stu_cell); %判断stu_cell是否为细胞数组

b=iscell(stu_struct);

stu_t=struct('name',{'LiMing','WangHong'},'number',{'20120101','20120102'},'sex',{'f','m' },'age',{ 20,19});

stu_c=struct2cell(stu_t); %将结构体转换成细胞数组

c= {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]};%建立细胞数组

m= cell2mat(c); %将细胞数组合并成矩阵

M = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20];

C1= mat2cell(M, [2 2], [3 2]); %将M拆分成细胞数组

C2=num2cell(M); %将M转换成细胞数组

figure;

subplot(121);cellplot(C1); %显示C1结构图

subplot(122);cellplot(C2); %显示C2结构图

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行

A=eye(3); %建立3×3对角矩阵A

B=magic(3); %建立3×3魔方矩阵B

C1=A.*B; %A点乘B

C2=A*B; %A乘以B

C3=A/B; %A左除B

C4=A./B; %A左点除B

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行

A = [2 7 6;9 0 5;3 0.5 6];

B = [8 7 0;3 2 5;4 -1 7];

C1=A

C2=lt(A,B); %lt函数求小于

C3=A==B; %恒等于

C4=~A; %不等于

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行

A = [0 1 1 0 1];

B = [1 1 0 0 1];

C=A&B; %与运算

D=A|B; %或运算

E=~A; %非运算

F=and(A,B); %and函数与运算

G=xor(A,B); %异或运算

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行a=54;

b=12;

c1=(a

c2=(b*4

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行a1=2+3*4>5&1; %运算符优先级

a2=2+(3*4>5&1);

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=[1,2,3,4,5]; %建立行向量

B=[1 2 3 4 5]; %建立行向量

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行C=[1,2,3;4,5,6;7,8,9;10,11,12]; %建立4×3矩阵

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=ones(3); %建立一个元素都为1的3阶方阵

B=ones(2,3); %建立一个元素都为1的2×3阶矩阵

C=zeros(2,3); %建立一个元素都为0的2×3阶矩阵

D=eye(3); %建立一个对角元素为1其它元素为0的3阶方阵

v=[1,2,3,4,5]; %生成一个行向量

E=diag(v); %将一个向量变成一个对角矩阵

F=magic(3); %建立一个3阶魔方方阵

G=rand(2,3); %建立一个2×3阶随机矩阵

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=ones(2,4)*3;

B=rand(3,4);

C=[A;B]; %纵向合并两矩阵

D=[A B]; %横向合并两矩阵

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=eye(3);

B=rand(3);

C1=repmat(A,2,3); %将矩阵复制合并成新矩阵

C2=blkdiag(A,B); %将矩阵合并成对角矩阵

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=magic(5);

B=A(:,[2 4]); %提取矩阵A中的第2列和第4列组成矩阵B

C=A([1 3],[2 4]); %提取矩阵A中的第1行和第3行,

第2列和第4列元素组成矩阵C

D=A(1:3,3:4); %提取矩阵A中的1至3行,3至4列中元素组成新矩阵D E=A([1:3;4 5 7;10:12]); %提取矩阵A中单下标为1至3的元素为第一行

%下标为4,5,7的元素为第二行,下标为10至12的为第三

行组成矩阵E

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=[1,3,4;5,6,7;1,0,0];

a=det(A); %求行列式的值

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行B1= transpose(A); %求转置矩阵

B2= A';

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=magic(3);

B=[1 2 3 4;5 6 7 8];

C=inv(A); %求逆矩阵

D=pinv(B); %求伪逆矩阵

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行

rank(A) %求矩阵的秩

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行k = 5;

hilbert = zeros(k,k); %产生一个5×5全0矩阵

for m = 1:k %应用for给Hilbert矩阵赋值

for n = 1:k

hilbert(m,n) = 1/(m+n -1);

end

end

format rat

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=[1,2,3,4,5,6]; %计算矩阵A所有元素和

sum=0;

k=0;

for n=A

n;

k=k+1;

sum=sum+n;

end

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行i=1; %计算1至100的和

sum=0;

while(i<=100)

sum=sum+i;

i=i+1;

end

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=magic(5); %产生5阶魔方矩阵A

a=A(1); %查找A中最大元素,及元素下标

for i=2:25

if A(i)>a

a=A(i);

n=i;

end

end

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行k=5;

for m = 1:k %创建一个5阶方阵A,当行标和列标相等的元素赋2, for n = 1:k %行标和列标的差的绝对值为2的元素赋1

if m == n

a(m,n) = 2;

elseif abs(m-n) == 2

a(m,n) = 1;

else

a(m,n) = 0;

end

end

end

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行try %打开一个文件名为girl.bmp的文件,若文件不存在,则打开

picture=imread('girl.bmp','bmp'); %一个文件名为girl.jpg的文件

filename='girl.bmp';

catch

picture=imread('girl.jpg','jpg');

filename='girl.jpg';

end

filename;

lasterror;

%求1至100的和

i=1;

s=0;

for i=1:100

s=s+i;

end

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行x=0:0.02:2*pi; %定义自变量x取值

y=sin(x); %定义函数y与变量x的关系,生成绘制图形的数据

plot(x,y); %将函数y与自变量取值的点连接起来

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行x=-20:20;

y=x.^2+2*x+1; %输入为一维向量

plot(x,y);

z=magic(4); %输入为4阶方阵

plot(z);

c=[1+2i,4+3i,7+11i]; %输入为一维复向量

plot(c);

x1=0:0.01:10;

y1=exp(sin(x1));

y2=sin(2*x1+2.*pi./3);

y3=exp(-0.1.*x1).*sin(6*x1);

plot(x1,y1,x1,y2,x1,y3); %在同一图形窗口中画出y1,y2和y3曲线

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行x=0:0.01:10;

y1=sin(2.*x);

y2=2.*sin(x);

figure(1); %打开一个图形窗口

subplot(121);plot(y1); %将窗口分割成1×2两个区域,分别绘制y1和y2 subplot(122);plot(y2);

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行x=0:0.1:10;

y1=sin(2.*x);

y2=2.*sin(x);

plot(x,y1,'b*:',x,y2,'r+-'); %设置颜色、顶点和线型

axis([0 pi 0 2 ]); %设置坐标轴

title('正弦曲线'); %设置标题行

xlabel('时间/单位:秒');

ylabel('电压/单位:伏特'); %设置横坐标纵坐标

gtext('y=sin(2x)'); %在图中鼠标指定位置添加文字y=sin(2x)

gtext(2.5,1.5,'y=2sin(x)'); %在图中(2.5, 1.5)处添加文字y=2sin(x)

grid; %设置栅格

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行y=randn(1000,1); %建立正态分布的向量

figure;

subplot(121);hist(y); %采用hist绘制默认直方图

subplot(122);hist(y,20) %采用hist绘制指定直方图

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行A=magic(4);

B=[1,2,3;5,5,7;6,3,4;9,4,7];

figure;

subplot(121);bar(A); %画出A的柱状图

subplot(122);barh(B); %画出B的柱状图

close all; clear all; clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行[x,y,z]=peaks;

figure(1)

subplot(121);

contour(z); %绘制峰函数的等高线

subplot(122);

contour(z,16); %绘制等高线指定条数function y = average(x)

%求向量元素平均值.

%函数名为average,输入参数为一向量

%输入为非向量时报错

[m,n] = size(x);

if (~((m == 1) || (n == 1)) || (m == 1 && n == 1))

error('Input must be a vector')

end

y = sum(x)/length(x);

end

第3章 MATLAB图像处理基础

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

X=imread('football.jpg'); %读取文件格式为.jpg,

文件名为football的RGB图像的信息

I=rgb2gray(X); %将RGB图像转换为灰度图像

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

subplot(121),imshow(X); %显示原RGB图像

subplot(122),imshow(I); %显示转换后灰度图像

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

[X,map] = imread('trees.tif'); %读取原图像信息

newmap = rgb2gray(map); %将彩色颜色映射表转换为灰度颜色映射表

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure,imshow(X,map); %显示原图像

figure,imshow(X,newmap); %显示转换后灰度图像

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

RGB = imread('football.jpg'); %读取图像信息

[X1,map1]=rgb2ind(RGB,64); %将RGB图像转换成索引图像,颜色种数N是64种[X2,map2]=rgb2ind(RGB,0.2); %将RGB图像转换成索引图像,颜色种数N是216种map3= colorcube(128); %创建一个指定颜色数目的RGB颜色映射表

X3=rgb2ind(RGB,map3);

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure;

subplot(131),imshow(X1,map1); %显示用最小方差法转换后索引图像

subplot(132),imshow(X2,map2); %显示用均匀量化法转换后索引图像

subplot(133),imshow(X3,map3); %显示用颜色近似法转换后索引图像

close all %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc %清屏

I = imread('cameraman.tif') %读取灰度图像信息

[X,map]=gray2ind(I,8); %实现灰度图像向索引图像的转换,N取8

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure,imshow(I); %显示原灰度图像

figure, imshow(X, map); %显示N=8转换后索引图像

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

I = imread('coins.png'); %读取图像信息

X = grayslice(I,32); %将灰度图像转换为索引图像

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure,imshow(I); %显示原图像

figure,imshow(X,jet(32)); %jet(M)是相当于colormap,是一个M×3的数组,close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

[X,map]=imread('forest.tif');%像信息

I = ind2gray(X,map); %再将索引图像转换为灰度图像

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure,imshow(X,map); %将索引图像显示

figure,imshow(I); %将灰度图像显示

close all; %关闭当前所有图形窗口

clear all %清空工作空间变量

clc; %清屏

[X,map]=imread('kids.tif'); %读取图像信息

RGB=ind2rgb(X,map); %将索引图像转换为真彩色图像

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure, imshow(X,map); %显示原图像

figure,imshow(RGB); %显示真彩色图像

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

I=imread('rice.png'); %读取图像信息

BW1=im2bw(I,0.4); %将灰度图像转换为二值图像,level值为0.4

BW2=im2bw(I,0.6); %将灰度图像转换为二值图像,level值为0.6

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure;

subplot(131),imshow(I); %显示level=0.4转换后的二值图像

subplot(132),imshow(BW1); %显示level=0.5转换后的二值图像

subplot(133),imshow(BW2); %显示level=0.6转换后的二值图像

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

load trees; %从文件‘trees。mat’中载入数据到workplace BW = im2bw(X,map,0.4); %将缩=索引图像转换为二值图像

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure, imshow(X,map); %显示原索引图像

figure, imshow(BW); %显示转换后二值图像

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

I=imread('pears.png'); %读取图像信息

BW=im2bw(I,0.5); %将RGB图像转换为二值图像

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure,

subplot(121),imshow(I); %显示原图像

subplot(122),imshow(BW); %显示转换后二值图像

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

X=magic(256);

I= mat2gray(X); %将矩阵J转换为灰度图像

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

imshow(I); %显示转换后灰度图像

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

I1=imread('football.jpg'); %读取一幅RGB图像

I2=imread('cameraman','tif'); %读取一幅灰度图像

I3=imread('E:\onion.png'); %读取非当前路径下的一幅RGB图像

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置

figure,

subplot(1,3,1),imshow(I1); %显示该RGB图像

subplot(1,3,2),imshow(I2); %显示该灰度图像

subplot(1,3,3),imshow(I3); %显示该RGB图像

clear all;

close all;

clc;

[X,map]=imread('beach.gif',2);

[X1,map1]=imread('beach.gif',12);

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure,

subplot(121),imshow(X,map);

subplot(122),imshow(X1,map1);

I1=imread('pillsetc.png','BackgroundColor',[1 0 0]);

I2=imread('rice.png','BackgroundColor',1);

I3=imread('forest.tif','BackgroundColor',64);

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

I=imread('lena.bmp'); %读取图像信息

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置

subplot(121),imshow(I,128); %以128灰度级显示该灰度图像

subplot(122),imshow(I,[60,120]); %设置灰度上下为[60,120]显示该灰度图像close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

I=imread('lena.bmp'); %读取图像信息

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置

figure,

subplot(221),imshow(I);

subplot(222),image(I);

subplot(223),image([50,200],[50,300],I);

subplot(224),imagesc(I,[60,150]);

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

I=imread('tire.tif'); %读取图像信息

H=[1 2 1;0 0 0;-1 -2 -1]; %设置subol算子

X=filter2(H,I); %对灰度图像G进行2次滤波,实现边缘检测set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置

figure,

subplot(131),imshow(I);

subplot(132),imshow(X,[]),colorbar(); %显示图像,并添加颜色条

subplot(133),imshow(X,[]),colorbar('east');

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

I=zeros(128,128,1,27); %建立四维数组I

for i=1:27

[I(:,:,:,i),map]=imread('mri.tif',i); %读取多帧图像序列,存放在数组I中

end

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置

montage(I,map); %将多帧图像同时显示

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

%I=imread('testpat.png');

I=imread('football.jpg'); %读取图像信息

[x,y,z]=sphere; %创建三个(N+1)×(N+1)的矩阵,

使得surf(X,Y,Z)建立一个球体,缺省时N取20 set(0,'defaultFigurePosition',[100,100,1000,400]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置

figure,

subplot(121),warp(I); %显示图像映射到矩形平面

subplot(122),warp(x,y,z,I); %将二维图像纹理映射三维球体表面

grid; %建立网格

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

load trees; %载入图像文件trees.mat,

将其中的变量载入workspace中

[X1,map1]=imread('forest.tif'); %读取图像信息

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置

figure,

subplot(1,2,1),subimage(X,map); %将图像窗口分成1×2个子窗口,

在左边子窗口中显示图像X

subplot(1,2,2),subimage(X1,map1); %在右边子窗口中显示图像X1

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

RGB = imread('peppers.png'); %读取图像信息

c = [12 146 410]; %新建一个向量c,存放像素纵坐标

r = [104 156 129]; %新建一个向量r,存放像素横坐标

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置

pixels1=impixel(RGB) %交互式用鼠标选择像素

pixels2= impixel(RGB,c,r) %将像素坐标作为输入参数,显示特定像素的颜色值close all; %关闭当前所有图形窗口

clear all %清空工作空间变量

clc; %清屏

set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置

set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置

h = imshow('hestain.png'); %显示图像

hp = impixelinfo; %创建图像像素信息显示工具

set(hp,'Position',[150 290 300 20]); %设置像素信息工具显示的位置

figure

imshow('trees.tif');

impixelinfo %创建图像像素信息显示工具

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量

clc; %清屏

obj = mmreader('xylophone.mpg', 'tag', 'myreader1');

%创建多媒体文件对象句柄,并设置标签

Frames = read(obj); %读取视频流,将每一帧图像存在数组Frames中numFrames = get(obj, 'numberOfFrames'); %获取视频流中总帧数

for k = 1 : numFrames

mov(k).cdata = Frames(:,:,:,k); %将每一图像帧中的数据矩阵

读取出来存在mov(k).cdata中

mov(k).colormap = []; %将颜色表赋值为空

end

hf = figure; %创建一个图像窗口

set(hf, 'position', [150 150 obj.Width obj.Height]); %根据视频帧的宽度和高度,重新设置图像窗口大小

movie(hf, mov, 1, obj.FrameRate); %按照视频流原来的帧速率来播放该视频

close all; %关闭当前所有图形窗口

clear all; %清空工作空间变量clc; %清屏

load mri

mov = immovie(D,map);

implay(mov)

第4章数字图像的运算

close all;clear all;clc; %关闭当前所有图形窗口,清空工作空间变量,

清除工作空间所有变量

gamma=0.5; %设定调整线性度取值

I=imread('peppers.png'); %读入要处理的图像,并赋值给I

R=I; %将图像数据赋值给R

R (:,:,2)=0; %将原图像变成单色图像,保留红色

R(:,:,3)=0;

R1=imadjust(R,[0.5 0.8],[0 1],gamma); %利用函数imadjust调整R的灰度,结果返回R1 G=I; %将图像数据赋值给G

G(:,:,1)=0; %将原图像变成单色图像,保留绿色

G(:,:,3)=0;

G1=imadjust(G,[0 0.3],[0 1],gamma); %利用函数imadjust调整G的灰度,结果返回G1 B=I; %将图像数据赋值给B

B(:,:,1)=0; %将原图像变成单色图像,保留蓝色

B(:,:,2)=0;

B1=imadjust(B,[0 0.3],[0 1],gamma); %利用函数imadjust调整B的灰度,结果返回B1 I1=R1+G1+B1; %求变换后的RGB图像

set(0,'defaultFigurePosition',[100,100,1000,500]);%修改图形图像位置的默认设置

set(0,'defaultFigureColor',[1 1 1]) %修改图形背景颜色的设置

figure(1)

subplot(121),imshow(R); %绘制R、R1、G、G1、B、B1图像,

观察线性灰度变换结果

subplot(122),imshow(R1);

figure(2);

subplot(121),imshow(G);

subplot(122),imshow(G1);

figure(3);

subplot(121),imshow(B);

subplot(122),imshow(B1);

figure(4);

subplot(121),imshow(I);

subplot(122),imshow(I1);

close all;clear all;clc; %关闭当前所有图形窗口,清空工作空间变量,

清除工作空间所有变量

R=imread('peppers.png'); %读入原图像,赋值给R

J=rgb2gray(R); %将彩色图像数据R转换为灰度图像数据J [M,N]=size(J); %获得灰度图像数据J的行列数M,N

x=1;y=1; %定义行索引变量x、列索引变量y

for x=1:M

matlab图像处理实验报告

图像处理实验报告 姓名:陈琼暖 班级:07计科一班 学号:20070810104

目录: 实验一:灰度图像处理 (3) 实验二:灰度图像增强 (5) 实验三:二值图像处理 (8) 实验四:图像变换 (13) 大实验:车牌检测 (15)

实验一:灰度图像处理题目:直方图与灰度均衡 基本要求: (1) BMP灰度图像读取、显示、保存; (2)编程实现得出灰度图像的直方图; (3)实现灰度均衡算法. 实验过程: 1、BMP灰度图像读取、显示、保存; ?图像的读写与显示操作:用imread( )读取图像。 ?图像显示于屏幕:imshow( ) 。 ?

2、编程实现得出灰度图像的直方图; 3、实现灰度均衡算法; ?直方图均衡化可用histeq( )函数实现。 ?imhist(I) 显示直方图。直方图中bin的数目有图像的类型决定。如果I是个灰度图像,imhist将 使用默认值256个bins。如果I是一个二值图像,imhist使用两bins。 实验总结: Matlab 语言是一种简洁,可读性较强的高效率编程软件,通过运用图像处理工具箱中的有关函数,就可以对原图像进行简单的处理。 通过比较灰度原图和经均衡化后的图形可见图像变得清晰,均衡化后的直方图形状比原直方图的形状更理想。

实验二:灰度图像增强 题目:图像平滑与锐化 基本要求: (1)使用邻域平均法实现平滑运算; (2)使用中值滤波实现平滑运算; (3)使用拉普拉斯算子实现锐化运算. 实验过程: 1、 使用邻域平均法实现平滑运算; 步骤:对图像添加噪声,对带噪声的图像数据进行平滑处理; ? 对图像添加噪声 J = imnoise(I,type,parameters)

matlab图像处理的几个实例

Matlab图像处理的几个实例(初学者用) 1.图像的基本信息及其加减乘除 clear,clc; P=imread('yjx.jpg'); whos P Q=imread('dt.jpg'); P=im2double(P); Q=im2double(Q); gg1=im2bw(P,0.3); gg2=im2bw(P,0.5); gg3=im2bw(P,0.8); K=imadd(gg1,gg2); L=imsubtract(gg2,gg3); cf=immultiply(P,Q); sf=imdivide(Q,P); subplot(421),imshow(P),title('郁金香原图'); subplot(422),imshow(gg1),title('0.3'); subplot(423),imshow(gg2),title('0.5'); subplot(424),imshow(gg3),title('0.8'); subplot(425),imshow(K),title('0.3+0.5'); subplot(426),imshow(L),title('0.5-0.3'); subplot(427),imshow(cf),title('P*Q'); subplot(428),imshow(sf),title('P/Q'); 2.图像缩放 clear,clc; I=imread('dt.jpg'); A=imresize(I,0.1,'nearest'); B=imresize(I,0.4,'bilinear'); C=imresize(I,0.7,'bicubic'); D=imresize(I,[100,200]); F=imresize(I,[400,100]); figure subplot(321),imshow(I),title('原图'); subplot(322),imshow(A),title('最邻近插值'); subplot(323),imshow(B),title('双线性插值'); subplot(324),imshow(C),title('二次立方插值'); subplot(325),imshow(D),title('水平缩放与垂直缩放比例为2:1'); subplot(326),imshow(F),title('水平缩放与垂直缩放比例为1:4');

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

非常全非常详细的MATLAB数字图像处理技术

MATLAB数字图像处理 1 概述 BW=dither(I)灰度转成二值图; X=dither(RGB,map)RGB转成灰度图,用户需要提供一个Colormap; [X,map]=gray2ind(I,n)灰度到索引; [X,map]=gray2ind(BW,n)二值图到索引,map可由gray(n)产生。灰度图n 默认64,二值图默认2; X=graylice(I,n)灰度图到索引图,门限1/n,2/n,…,(n-1)/n,X=graylice(I,v)给定门限向量v; BW=im2bw(I,level)灰度图I到二值图; BW=im2bw(X,map,level)索引图X到二值图;level是阈值门限,超过像素为1,其余置0,level在[0,1]之间。 BW=im2bw(RGB,level)RGB到二值图; I=ind2gray(X,map)索引图到灰度图; RGB=ind2rgb(X,map)索引图到RGB; I=rgb2gray(RGB)RGB到灰度图。 2 图像运算 2.1图像的读写 MATLAB支持的图像格式有bmp,gif,ico,jpg,png,cur,pcx,xwd和tif。 读取(imread): [1]A=imread(filename,fmt) [2] [X,map]=imread(filename,fmt) [3] […]=imread(filename) [4] […]=imread(URL,…) 说明:filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图,map 为索引图对应的Colormap,即其相关联的颜色映射表,若不是索引图则map为空。URL表示引自Internet URL中的图像。 写入(imwrite): [1] R=imwrite(A,filename,fmt); [2] R=imwrite(X,map,filename,fmt); [3] R=imwrite(…,filename); [4] R=imwrite(…,Param1,Val1,Param2,Val2) 说明:针对第四个,该语句用于指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。例如HDF的Quality,Compression,WriteMode;JPEG的BitDepth,Comment:Emptyor not,Mode:lossy orlossless,Quality等。 2.2 图像的显示 方法1:使用Image Viewer(图像浏览器),即运用imview函数。

基于MATLAB的图像处理的基本运算

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: 基于MATLAB的图像处理的基本运算 初始条件: 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)能够对图像亮度和对比度变化调整,并比较结果 (2)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的和旋转操作,并保存,比较几 种插值的效果 (3)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 (4)对图像加入各种噪声,比较效果。 时间安排: 指导教师签名:年月日 系主任(或责任教师)签名:年月日 目录 摘要.......................................................................................................................... 错误!未定义书签。 1 MATLAB简介 ........................................................................................................ 错误!未定义书签。2图像选择及变换................................................................................................... 错误!未定义书签。 2.1 原始图像选择读取....................................................................................... 错误!未定义书签。 2.1.1 原理图的读入与基本变换 .................................................................... 错误!未定义书签。

基于MATLAB图像处理报告.docx

基于M A T L A B图像处理报告一、设计题目 图片叠加。 二、设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。 三、设计方案 3.1、设计思路 利用matlab强大的图像处理功能,通过编写程序,实现对两幅图片的像素进行线性运算,利用灰度变换的算法使图片达到预期的效果。 3.2、软件介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB 也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载就可以用。

图像处理实例(含Matlab代码)

信号与系统实验报告——图像处理 学院:信息科学与工程学院 专业:2014级通信工程 组长:** 组员:** 2017.01.02

目录 目录 (2) 实验一图像一的细胞计数 (3) 一、实验内容及步骤 (3) 二、Matlab程序代码 (3) 三、数据及结果 (4) 实验二图像二的图形结构提取 (5) 一、实验内容及步骤 (5) 二、Matlab程序代码 (5) 三、数据及结果 (6) 实验三图像三的图形结构提取 (7) 一、实验内容及步骤 (7) 二、Matlab程序代码 (7) 三、数据及结果 (8) 实验四图像四的傅里叶变化及巴特沃斯低通滤波 (9) 一、实验内容及步骤 (9) 二、Matlab程序代码 (9) 三、数据及结果 (10) 实验五图像五的空间域滤波与频域滤波 (11) 一、实验内容及步骤 (11) 二、Matlab程序代码 (11) 三、数据及结果 (12)

实验一图像一的细胞计数 一、实验内容及步骤 将该图形进行一系列处理,计算得到途中清晰可见细胞的个数。 首先,由于原图为RGB三色图像处理起来较为麻烦,所以转为灰度图,再进行二值化化为黑白图像,得到二值化图像之后进行中值滤波得到细胞分布的初步图像,为了方便计数对图像取反,这时进行一次计数,发现得到的个数远远多于实际个数,这时在进行一次中值滤波,去掉一些不清晰的像素点,剩下的应该为较为清晰的细胞个数,再次计数得到大致结果。 二、Matlab程序代码 clear;close all; Image = imread('1.jpg'); figure,imshow(Image),title('原图'); Image=rgb2gray(Image); figure,imshow(Image),title('灰度图'); Theshold = graythresh(Image); Image_BW = im2bw(Image,Theshold); Reverse_Image_BW22=~Image_BW; figure,imshow(Image_BW),title('二值化图像'); Image_BW_medfilt= medfilt2(Image_BW,[3 3]); figure,imshow(Image_BW_medfilt),title('中值滤波后的二值化图像'); Reverse_Image_BW = ~Image_BW_medfilt; figure,imshow(Reverse_Image_BW),title('图象取反'); Image_BW_medfilt2= medfilt2(Reverse_Image_BW,[20 20]); figure,imshow(Image_BW_medfilt2),title('第二次中值滤波的二值化图像'); [Label, Number]=bwlabel(Image_BW_medfilt,8);Number [Label, Number]=bwlabel(Image_BW_medfilt2,8);Number

MATLAB课程设计-图像处理完整版

MATLAB课程设计 设计题目:应用图像处理 班级: 学号: 姓名: 指导老师: 设计时间:2013年4月8号-4月14号

摘要 21世纪是一个充满信息的时代,图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。图像处理,是用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本容图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要容包括图像压缩,增强和复原,匹配、描述和识别3个部分。常见的处理有图像数字化、图像编码、图像增强、图像复原、图像分割和图像分析等。图像处理一般指数字图像处理。所谓数字图像处理[7]就是利用计算机对图像信息进行加工以满足人的视觉心理或者应用需求的行为。实质上是一段能够被计算机还原显示和输出为一幅图像的数字码。 关键词:DCT变换;图像压缩;真色彩增强;平滑;锐化;直方图均衡; 灰度变换;滤波;M文件的使用 目录 摘要………………………………………………………………I 1 概述……………………………………………………………II 2 课程设计任务及要求...............................III 2.1.1设计任务 2.1.2设计要求 3 系统设计原理 (Ⅳ)

3.1 DCT图像压缩原理 3.2 真彩色增强 3.2.1平滑 3.2.2锐化 3.3 灰度变换(直方图均衡化) 3.4 图像滤波 3.4.1中值滤波器 3.4.2维纳滤波器 4 程序代码及实验结果与分析 (Ⅵ) 4.1 DCT图像压缩 4.1.1程序代码 4.1.2实验结果 4.1.3结果分析 4.2 真彩色增强 4.2.1平滑程序代码 4.2.2实验结果 4.2.3结果分析 4.2.4锐化程序代码 4.2.5实验结果 4.2.6结果分析 4.3 灰度变换(直方图均衡化) 4.3.1程序代码

MATLAB中图像函数大全 详解及例子

图像处理函数详解——strel 功能:用于膨胀腐蚀及开闭运算等操作的结构元素对象(本论坛随即对膨胀腐蚀等操作进行讲解)。 用法:SE=strel(shape,parameters) 创建由指定形状shape对应的结构元素。其中shape的种类有 arbitrary' 'pair' 'diamond' 'periodicline' 'disk' 'rectangle' 'line' 'square' 'octagon 参数parameters一般控制SE的大小。 例子: se1=strel('square',6) %创建6*6的正方形 se2=strel('line',10,45) %创建直线长度10,角度45 se3=strel('disk',15) %创建圆盘半径15 se4=strel('ball',15,5) %创建椭圆体,半径15,高度5

图像处理函数详解——roipoly 功能:用于选择图像中的多边形区域。 用法:BW=roipoly(I,c,r) BW=roipoly(I) BW=roipoly(x,y,I,xi,yi) [BW,xi,yi]=roipoly(...) [x,y,BW,xi,yi]=roipoly(...) BW=roipoly(I,c,r)表示用向量c、r指定多边形各点的X、Y坐标。BW选中的区域为1,其他部分的值为0. BW=roipoly(I)表示建立交互式的处理界面。 BW=roipoly(x,y,I,xi,yi)表示向量x和y建立非默认的坐标系,然后在指定的坐标系下选择由向量xi,yi指定的多边形区域。 例子:I=imread('eight.tif'); c=[222272300270221194]; r=[21217512112175]; BW=roipoly(I,c,r); imshow(I)

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理

实验一图像的点运算 实验1.1 直方图 一.实验目的 1.熟悉matlab图像处理工具箱及直方图函数的使用; 2.理解和掌握直方图原理和方法; 二.实验设备 1.PC机一台; 2.软件matlab。 三.程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察图像matlab环境下的直方图分布。 (a)原始图像 (b)原始图像直方图 六.实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡 一.实验目的 1.熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法; 二.实验设备 1.PC机一台; 2.软件matlab; 三.程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,3),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 a=histeq(I,256); %直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) %输出均衡化后图像 title('均衡化后图像') %在均衡化后图像中加标题 subplot(2,2,4),imhist(a) %输出均衡化后直方图 title('均衡化后图像直方图') %在均衡化后直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察matlab环境下图像灰度均衡结果及直方图分布。 (a)原始图像 (b)均衡化后图像

matlab 图像处理报告

《 MATLAB 实践》 课程设计 学生姓名: 学号: 专业班级: 指导教师: 二○○九年三月十三日

1.设计目的…………………………………………………第 3页 2.题目分析…………………………………………………第3 页 3.总体设计…………………………………………………第4 页 4.具体设计…………………………………………………第 6页 5.结果分析…………………………………………………第 20页 6.心得体会…………………………………………………第 20页 7.参考书目…………………………………………………第 20页

1 课程设计的目的: 综合运用MATLAB工具箱实现图像处理的GUI程序设计。 2、题目分析 课程设计的基本要求 1)熟悉和掌握MATLAB 程序设计方法 2)掌握MATLAB GUI 程序设计 3)学习和熟悉MATLAB图像处理工具箱 4)学会运用MATLAB工具箱对图像进行处理和分析 课程设计的内容 学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。 以下几点是程序必须实现的功能。 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。 3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。 4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。 5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。

matlab图像处理小结

1.function [center, r] = solve_circle(pt1, pt2, pt3) 2.%Effect: solve the circle which across points 'pt1', 'pt2' and 'pt3' 3.%Inputs: 4.%pt1, pt2, pt3: [x, y] 5.%center: the circle center [x0; y0] 6.%r: the radius of the circle 7.%Author: Su dongcai at 2012/1/2 8. A = zeros(2, 2); B = zeros(2, 1); 9.[A(1, :), B(1)] = circle2line(pt1, pt2); 10.[A(2, :), B(2)] = circle2line(pt2, pt3); 11.center = A\B; 12.r = norm(pt1' - center); 13. 14.function [A, B] = circle2line(pt1, pt2) 15.%Effect: cast 2 circles equation into 1 linear equation: 16.%(a-x1)^2 + (b-y1)^2 = r^2 | 17.% |==> 2(x1-x2)a + 2(y1-y2)b = (x1^2 + y1^2) - (y2^2 + y2^2) 18.%(a-x2)^2 + (b-y2)^2 = r^2 | 19.%Inputs: 20.%pt1, pt2: [x1, y1], [x2, y2] 21.%Outputs: 22.%A: 2[x1-x2, y1-y2] 23.%B: (x1^2 + y1^2) - (x2^2 + y2^2) 24.%Author: Su dongcai at 2012/1/2 25.A = 2*(pt1 - pt2); 26.B = norm(pt1)^2 - norm(pt2)^2; close all;clear;clc; >> i=imread('rice.png'); %>> imshow(i); >> background=imopen(i,strel('disk',15)); >> i2=imsubtract(i,background); %>> figure,imshow(i2); >> i3=imadjust(i2,stretchlim(i2),[0 1]); %>> figure,imshow(i3); >> level=graythresh(i3); >> bw=im2bw(i3,level); %>> figure,imshow(bw); >> [labeled,numobjects]=bwlabel(bw,4); graindata=regionprops(labeled,'all');

图像处理matlab程序实例

程序实例 1旋转: x=imread('d:\MATLAB7\work\flower.jpg'); y=imrotate(x,200,'bilinear','crop'); subplot(1,2,1); imshow(x); subplot(1,2,2); imshow(y) 2.图像的rgb clear [x,map]=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh1.jpg');y=x(90:95,90:95);imshow(y)R=x(90:95,90:95,1);G=x(90:95,90:95,2);B=x(90:95,90:95,3);R,G,B 3.加法运算clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh3.jpg');J=imnoise(I,'gaussian',0,0.02);%向图片加入高斯噪声subplot(1,2,1),imshow(I);%显示图片subplot(1,2,2),imshow(J);K=zeros(242,308);%产生全零的矩阵,大小与图片的大小一样for i=1:100%循环100加入噪声J=imnoise(I,'gaussian',0,0.02);J1=im2double(J);K=K+J1;end K=K/100; figure,imshow(K);save

4.减法 clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); J=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao1.jpg'); K=imsubtract(I,J);%实现两幅图相减 K1=255-K;%将图片求反显示 figure;imshow(I); title('有噪声的图'); figure;imshow(J); title('原图'); figure;imshow(K1); title('提取的噪声'); save 5.图像的乘法 H=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); I=immultiply(H,1.2);将此图片乘以1.2 J=immultiply(H,2); subplot(1,3,1),imshow(H); title('原图'); subplot(1,3,2),imshow(I); title('·放大1.2'); subplot(1,3,3),imshow(J); title('放大2倍'); 6除法运算 moon=imread('moon.tif'); I=double(moon); J=I*0.43+90; K=I*0.1+90; L=I*0.01+90; moon2=uint8(J); moon3=uint8(K); moon4=uint8(L); J=imdivide(moon,moon2); K=imdivide(moon,moon3); L=imdivide(moon,moon4); subplot(2,2,1),imshow(moon); subplot(2,2,2),imshow(J,[]); subplot(2,2,3),imshow(K,[]); subplot(2,2,4),imshow(L,[]);

基于MATLAB的运动模糊图像处理

基于MATLAB的运动模糊图像处理 提醒: 我参考了文献里的书目和网上的一些代码而完成的,所以误差会比较大,目前对于从网上下载的模糊图片的处理效果很不好,这是我第一次上传自己完成的实验的文档,希望能帮到一些人吧。 研究目的 在交通系统、刑事取证中图像的关键信息至关重要,但是在交通、公安、银行、医学、工业监视、军事侦察和日常生活中常常由于摄像设备的光学系统的失真、调焦不准或相对运动等造成图像的模糊,使得信息的提取变得困难。但是相对于散焦模糊,运动模糊图像的复原在日常生活中更为普遍,比如高速运动的违规车辆的车牌辨识,快速运动的人群中识别出嫌疑人、公安刑事影像资料中提取证明或进行技术鉴定等等,这些日常生活中的重要应用都需要通过运动模糊图像复原技术来尽可能地去除失真,恢复图像的原来面目。因此对于运动模糊图像的复原技术研究更具有重要的现实意义。 图像复原原理 本文探讨了在无噪声的情况下任意方向的匀速直线运动模糊图像的复原问题,并在此基础上讨论了复原过程中对点扩散函数(PSF)的参数估计从而依据自动鉴别出的模糊方向和长度构造出最为近似的点扩散函数,构造相应的复原模型,实现运动模糊图像的复原;在模糊图像自动复原的基础上,根据恢复效果图的纹理特征和自动鉴别出的模糊长度和角度,人工调整模糊方向和长度参数,使得复原效果达到最佳。 实验过程 模糊方向的估计: 对图1(a)所示的原始图像‘车牌’图像做方向θ=30?,长度L=20像素的匀速直线运动模糊,得到退化图像如图1(b)

1(a) 1(b) j=imread('车牌1.jpg'); figure(1),imshow(j); title('原图像'); len=20; theta=30; psf=fspecial('motion',len,theta); j1=imfilter(j,psf,'circular','conv'); figure,imshow(j1); title('PSF 模糊图像'); 图1(c)和1(d)分别为原图像和模糊图像的二次傅里叶变化

图像增强及MATLAB实现

《数字图像处理》课程设计 课设题目:图像增强与MATLAB实现学校学院:华东交通大学理学院 学生班级:13级信息计算(2)班学生:超 学生学号:20130810010216 指导老师:自柱

图像增强与MATLAB实现 摘要 数字图像处理是指将图像信号转换成数字格式并利用计算机对其进行处理的过程。图像增强是数字图像处理的过程中经常采用的一种方法,它对提高图像质量起着重要的作用。本文先对图像增强的原理进行概述,然后对图像增强的方法分类并给出直方图增强、对比度增强、平滑和锐化等几种常用的增强方法的理论基础,通过Matlab实验得出的实际处理效果来对比各种算法的优缺点,讨论不同的增强算法的技术要点,并对其图像增强方法进行性能评价。 关键字:图像;图像增强;算法

目录 一、MATLAB的简介 (1) 1.1MATLAB主要功能 (1) 二、MATLAB的主要功能 (1) 2.1数字增强技术概述 (1) 2.2数字图像的表示 (2)

三、直方图的均衡化 (2) 3.1图像的灰度 (2) 3.2灰度直方图 (2) 3.3直方图均衡化 (3) 四、图像二值化 (5) 4.1图像二值化 (5) 五、对比度增强 (7) 5.1对比度增强 (7) 5.2灰度调整 (8) 5.3对数变换 (9) 六、滤波 (10) 6.1平滑滤波 (10) 6.2线性平滑滤波程序: (11) 6.3非线性滤波 (12) 七、锐化 (18) 八、参考文献 (19) 九、自我评价 (20)

一、Matlab的简介 1.1 MATLAB主要功能 MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。目前,已成为工程领域中较常用的软件工具包之一。 二、MATLAB的主要功能 2.1数字增强技术概述 图像增强是按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些信息使得图像更加实用。图像增强技术主要包含直方图修改处理、图像平滑处理、图像尖锐化处理等。 图像增强技术主要包括:直方图修改处理,图像平滑处理,图像尖锐化处理,彩色图像处理。从纯技术上讲主要有两类:频域处理法和空域处理法。 频域处理法主要是卷积定理,采用修改图像傅立叶变换的方法实现对图像的增强处理技术;空域处理法:是直接对图像中的像素进行处理,基本上是以灰度映射变换为基础的。

图像运算的MATLAB实现

rice=imread(‘rice.png’); % 读入图像 I=double(rice); % 数据类型转换 J=I*0.43+60; % 像素点算术运算 rice2=uint8(J) % 数据类型转换subplot(1,2,1),imshow(rice); % 原图绘制subplot(1,2,2),imshow(rice2); % 计算后图像绘制

X = uint8([ 255 10 75; 44 225 100]); Y = uint8([ 50 20 50; 50 50 50 ]); Z = imdivide(X,Y)

I = imread('rice.png'); % 读入图像background = imopen(I,strel('disk',15)); % 图像开运算Ip = imdivide(I,background); % 图像除法运算imshow(Ip,[]) % 显示运算后的图像

I = imread('rice.png'); % 读入图像 J = imdivide(I,2); % 图像除以一个常数subplot(1,2,1), imshow(I) % 显示原始图像subplot(1,2,2), imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像J = imlincomb(2,I); % 灰度值放大imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像 J = uint8(filter2(fspecial('gaussian'), I)); % 图像滤波 K = imlincomb(1,I,-1,J,128); % K(r,c) = I(r,c) - J(r,c) + 128 % 图像相减后加上一个常数figure, imshow(K) % 显示运算后的图像

基于matlab数字图像处理与识别系统含程序

目录 第一章绪论 (2) 1.1 研究背景 (2) 1.2 人脸图像识别的应用前景 (3) 1.3 本文研究的问题 (4) 1.4 识别系统构成 (4) 1.5 论文的内容及组织 (5) 第二章图像处理的Matlab实现 (6) 2.1 Matlab简介 (6) 2.2 数字图像处理及过程 (6) 2.2.1图像处理的基本操作 (6) 2.2.2图像类型的转换 (7) 2.2.3图像增强 (7) 2.2.4边缘检测 (8) 2.3图像处理功能的Matlab实现实例 (8) 2.4 本章小结 (11) 第三章人脸图像识别计算机系统 (11) 3.1 引言 (11) 3.2系统基本机构 (12) 3.3 人脸检测定位算法 (13) 3.4 人脸图像的预处理 (18) 3.4.1 仿真系统中实现的人脸图像预处理方法 (19) 第四章基于直方图的人脸识别实现 (21) 4.1识别理论 (21) 4.2 人脸识别的matlab实现 (21) 4.3 本章小结 (22) 第五章总结 (22) 致谢 (23) 参考文献 (24) 附录 (25)

第一章绪论 本章提出了本文的研究背景及应用前景。首先阐述了人脸图像识别意义;然后介绍了人脸图像识别研究中存在的问题;接着介绍了自动人脸识别系统的一般框架构成;最后简要地介绍了本文的主要工作和章节结构。 1.1 研究背景 自70年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除了它的重大理论价值外,也极具实用价值。 在进行人工智能的研究中,人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此从解剖学、心理学、行为感知学等各个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,如各种智能机器人的研制。人脸图像的机器识别研究就是在这种背景下兴起的,因为人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。如果能够开发出具有像人类一样的机器识别机制,就能够逐步地了解人类是如何存储信息,并进行处理的,从而最终了解人类的思维机制。 同时,进行人脸图像识别研究也具有很大的使用价依。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己有实用的计算机自动指纹识别系统面世,并在安检等部门得到应用,但还没有通用成熟的人脸自动识别系统出现。人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,因为它取样方便,可以不接触目标就进行识别,从而开发研究的实际意义更大。并且与指纹图像不同的是,人脸图像受很多因素的干扰:人脸表情的多样性;以及外在的成像过程中的光照,图像尺寸,旋转,姿势变化等。使得同一个人,

matlab图像处理综合实验实验报告

《数字图像处理》 实验报告 学院: 专业: 班级: 姓名: 学号:

实验一 实验名称:图像增强 实验目的:1.熟悉图像在Matlab下的读入,输出及显示; 2.熟悉直方图均衡化; 3.熟悉图像的线性指数等; 4.熟悉图像的算术运算及几何变换. 实验仪器:计算机,Matlab软件 实验原理: 图像增强是为了使受到噪声等污染图像在视觉感知或某种准则下尽量的恢复到原始图像的水平之外,还需要有目的性地加强图像中的某些信息而抑制另一些信息,以便更好地利用图像。图像增强分频域处理和空间域处理,这里主要用空间域的方法进行增强。空间域的增强主要有:灰度变换和图像的空间滤波。 图像的直方图实际上就是图像的各像素点强度概率密度分布图,是一幅图像所有像素集合的最基本统计规律,均衡化是指在每个灰度级上都有相同的像素点过程。 实验内容如下: I=imread('E:\cs.jpg');%读取图像 subplot(2,2,1),imshow(I),title('源图像') J=rgb2gray(I)%灰度处理 subplot(2,2,2),imshow(J) %输出图像 title('灰度图像') %在原始图像中加标题 subplot(2,2,3),imhist(J) %输出原图直方图 title('原始图像直方图') 0100200

I=imread('E:\cs.jpg');%读取图像 subplot(1,2,1),imshow(I); theta = 30; K = imrotate(I,theta); subplot(1,2,2),imshow(K) 对数运算: I=imread('E:\dog.jpg'); subplot(2,2,1),imshow(I),title('源图像') J=rgb2gray(I)%灰度处理 subplot(2,2,2),imshow(J),title('灰度变换后图像') J1=log(1+double(J)); subplot(2,2,3),imshow(J1,[]),title('对数变换后') 指数运算: I=imread('E:\dog.jpg'); f=double(I); g=(2^2*(f-1))-1 f=uint8(f); g=uint8(g);

相关文档
最新文档