金字塔变换的图像融合Matlab源码

金字塔变换的图像融合Matlab源码
金字塔变换的图像融合Matlab源码

附录1 金字塔变换图像融合方法程序

% 拉普拉斯金字塔融合函数

function Y = fuse_lap(M1, M2, zt, ap, mp)

% M1、M2为源图像

% zt为融合层数,ap为高频子带图像选择系数,mp为低频子带图像选择系数[z1 s1] = size(M1);

[z2 s2] = size(M2);

if (z1 ~= z2) || (s1 ~= s2)

error('输入源图像大小不一致');

end;

% 高斯窗口函数

w = [1 4 6 4 1] / 16;

E = cell(1,zt);

for i1 = 1:zt

[z s] = size(M1);

zl(i1) = z; sl(i1) = s;

% 图像尺寸为奇数还是偶数

if (floor(z/2) ~= z/2), ew(1) = 1; else ew(1) = 0; end;

if (floor(s/2) ~= s/2), ew(2) = 1; else ew(2) = 0; end;

% 若为奇数,扩展为偶数

if (any(ew))

M1 = adb(M1,ew);

M2 = adb(M2,ew);

end;

% M1与M2低通滤波

G1 = conv2(conv2(es2(M1,2), w, 'valid'),w', 'valid');

G2 = conv2(conv2(es2(M2,2), w, 'valid'),w', 'valid');

% G1与G2下采样、上采样低通滤波后的膨胀序列

M1T = conv2(conv2(es2(undec2(dec2(G1)), 2), 2*w, 'valid'),2*w', 'valid');

M2T = conv2(conv2(es2(undec2(dec2(G2)), 2), 2*w, 'valid'),2*w', 'valid');

% 高频子带图像系数选择

E(i1) = {selg(M1-M1T, M2-M2T, ap)};

% G11与G2下采样

M1 = dec2(G1);

M2 = dec2(G2);

end;

% 低频子带图像系数选择

M1 = selh(M1,M2,mp);

% 图像重构

for i1 = zt:-1:1

M1T = conv2(conv2(es2(undec2(M1), 2), 2*w, 'valid'), 2*w', 'valid');

M1 = M1T + E{i1};

% 选择图像有效区域

M1 = M1(1:zl(i1),1:sl(i1));

end;

Y = M1;

end;

% 对比度金字塔融合函数

function Y = fuse_con(M1, M2, zt, ap, mp)

[z1 s1] = size(M1);

[z2 s2] = size(M2);

if (z1 ~= z2) | (s1 ~= s2)

error('输入图像尺寸大小不一致');

end;

w = [1 4 6 4 1] / 16;

eps = 1e-6;

E = cell(1,zt);

for i1 = 1:zt

[z s] = size(M1);

zl(i1) = z; sl(i1) = s;

if (floor(z/2) ~= z/2), ew(1) = 1; else, ew(1) = 0; end;

if (floor(s/2) ~= s/2), ew(2) = 1; else, ew(2) = 0; end;

if (any(ew))

M1 = adb(M1,ew);

M2 = adb(M2,ew);

end;

G1 = conv2(conv2(es2(M1,2), w, 'valid'),w', 'valid');

G2 = conv2(conv2(es2(M2,2), w, 'valid'),w', 'valid');

M1T = conv2(conv2(es2(undec2(dec2(G1)), 2), 2*w, 'valid'),2*w', 'valid'); M2T = conv2(conv2(es2(undec2(dec2(G2)), 2), 2*w, 'valid'),2*w', 'valid'); E(i1) = {selg(M1./(M1T+eps)-1, M2./(M2T+eps)-1, ap)};

M1 = dec2(G1);

M2 = dec2(G2);

end;

M1 = selh(M1,M2,mp);

for i1 = zt:-1:1

M1T = conv2(conv2(es2(undec2(M1), 2), 2*w, 'valid'), 2*w', 'valid');

M1 = (M1T+eps) .* (E{i1}+1);

M1 = M1(1:zl(i1),1:sl(i1));

end;

Y = M1;

end;

% 梯度金字塔融合函数

function Y = fuse_gra(M1, M2, zt, ap, mp)

[z1 s1] = size(M1);

[z2 s2] = size(M2);

if (z1 ~= z2) | (s1 ~= s2)

error('输入图像大小不一致');

end;

w = [1 4 6 4 1] / 16;

v = [1 2 1] / 4;% 核函数

% 梯度算子

d1 = [1 -1];

d2 = [0 -1; 1 0] / sqrt(2);

d3 = [-1 1];

d4 = [-1 0; 0 1] / sqrt(2);

% 计算导数

d1e = conv2(d1,d1);

d1e = [zeros(1,3); d1e; zeros(1,3)];

d2e = conv2(d2,d2);

d3e = d1e';

d4e = conv2(d4,d4);

E = cell(1,zt);

for i1 = 1:zt

[z s] = size(M1);

zl(i1) = z; sl(i1) = s;

if (floor(z/2) ~= z/2), ew(1) = 1; else, ew(1) = 0; end;

if (floor(s/2) ~= s/2), ew(2) = 1; else, ew(2) = 0; end;

if (any(ew))

M1 = adb(M1,ew);

M2 = adb(M2,ew);

end;

% 梯度金字塔的建立

G1 = conv2(conv2(es2(M1,2), w, 'valid'),w', 'valid');

G2 = conv2(conv2(es2(M2,2), w, 'valid'),w', 'valid');

Z1 = es2(M1+conv2(conv2(es2(M1, 1), v, 'valid'), v', 'valid'), 1); Z2 = es2(M2+conv2(conv2(es2(M2, 1), v, 'valid'), v', 'valid'), 1);

B = zeros(size(M1));

% 方向拉普拉斯金字塔的建立

D1 = conv2(Z1, d1e, 'valid');

D2 = conv2(Z2, d1e, 'valid');

B = B + selg(D1, D2, ap);

D1 = conv2(Z1, d2e, 'valid');

D2 = conv2(Z2, d2e, 'valid');

B = B + selg(D1, D2, ap);

D1 = conv2(Z1, d3e, 'valid');

D2 = conv2(Z2, d3e, 'valid');

B = B + selg(D1, D2, ap);

D1 = conv2(Z1, d4e, 'valid');

D2 = conv2(Z2, d4e, 'valid');

B = B + selg(D1, D2, ap);

E(i1) = {-B/8};

M1 = dec2(G1);

M2 = dec2(G2);

end;

M1 = selh(M1,M2,mp);

for i1 = zt:-1:1

M1T = conv2(conv2(es2(undec2(M1), 2), 2*w, 'valid'), 2*w', 'valid'); M1 = M1T + E{i1};

M1 = M1(1:zl(i1),1:sl(i1));

end;

Y = M1;

end;

% 图像2抽取函数

function Y = dec2(X);

[a b] = size(X);

Y = X(1:2:a, 1:2:b);

end;

% 图像2插值函数

function Y = undec2(X)

[z s] = size(X);

Y = zeros(2*z, 2*s);

Y(1:2:2*z,1:2:2*s) = X;

end;

% 图像扩展函数

function Y = adb(X, bd)

[z s] = size(X);

Y = zeros(z+bd(1),s+bd(2));

Y(1:z,1:s) = X;

if (bd(1) > 0)

Y(z+1:z+bd(1),1:s) = X(z-1:-1:z-bd(1),1:s);

end;

if (bd(2) > 0)

Y(1:z,s+1:s+bd(2)) = X(1:z,s-1:-1:s-bd(2));

end;

if (bd(1) > 0 & bd(2) > 0)

Y(z+1:z+bd(1),s+1:s+bd(2)) = X(z-1:-1:z-bd(1),s-1:-1:s-bd(2));

end;

% 图像边缘像素处理函数

function Y = es2(X, n)

[z s] = size(X);

Y = zeros(z+2*n, s+2*n);

Y(n+1:n+z,n:-1:1)= X(:,2:1:n+1);

Y(n+1:n+z,n+1:1:n+s)= X;

Y(n+1:n+z,n+s+1:1:s+2*n)= X(:,s-1:-1:s-n);

Y(n:-1:1,n+1:s+n)= X(2:1:n+1,:);

Y(n+z+1:1:z+2*n,n+1:s+n)= X(z-1:-1:z-n,:);

% 低频子带图像选择函数

function Y = selh(M1, M2, mp)

switch (mp)

case 1, Y = M1;% 选择图像M1低频子带图像作为融合函数低频成分

case 2, Y = M2;% 选择图像M2低频子带图像作为融合函数低频成分

case 3, Y = (M1 + M2)/2;% 选择图像M1与M2加权平均低频子带图像作为融合函数低频成分

otherwise, error('低频成分选择错误');

end;

% 高频子带图像选择函数

function Y = selg(M1, M2, ap)

% 判断输入图像是否大小一致

[z1 s1] = size(M1);

[z2 s2] = size(M2);

if (z1 ~= z2) | (s1 ~= s2)

error('输入图像大小不一致');

end;

switch(ap(1))

case 1,

% 绝对值最大融合准则

mm = (abs(M1)) > (abs(M2));

Y = (mm.*M1) + ((~mm).*M2);

case 2,

% 基于窗口系数加权平均融合准则

um = ap(2); th = .75;% 设定阈值

% 窗口区域加权平均能量

S1 = conv2(es2(M1.*M1, floor(um/2)), ones(um), 'valid');

S2 = conv2(es2(M2.*M2, floor(um/2)), ones(um), 'valid');

% 归一化相关度

MA = conv2(es2(M1.*M2, floor(um/2)), ones(um), 'valid');

MA = 2 * MA ./ (S1 + S2 + eps);

% s根据设定阈值选择融合系数

m1 = MA > th; m2 = S1 > S2;

w1 = (0.5 - 0.5*(1-MA) / (1-th));

Y = (~m1) .* ((m2.*M1) + ((~m2).*M2));

Y = Y + (m1 .* ((m2.*M1.*(1-w1))+((m2).*M2.*w1) + ((~m2).*M2.*(1-w1))+((~m2).*M1.*w1)));

case 3,

% 窗口系数绝对值选大融合准则

um = ap(2);

A1 = ordfilt2(abs(es2(M1, floor(um/2))), um*um, ones(um));

A2 = ordfilt2(abs(es2(M2, floor(um/2))), um*um, ones(um));

mm = (conv2((A1 > A2), ones(um), 'valid')) > floor(um*um/2);

Y = (mm.*M1) + ((~mm).*M2);

case 4,

% 系数最大融合准则

mm = M1 > M2;

Y = (mm.*M1) + ((~mm).*M2);

otherwise,

error('高频成分选择错误');

end;

附录2 融合图像性能评价程序

% 互信息函数

function mui = mutinf(M1, M2, F)

function mi = mutinf1(a, b)

a=double(a);

b=double(b);

[Ma,Na] = size(a);

[Mb,Nb] = size(b);

M=min(Ma,Mb);

N=min(Na,Nb);

% 初始化直方图数组

hab = zeros(256,256);

ha = zeros(1,256);

hb = zeros(1,256);

% 归一化

if max(max(a))~=min(min(a))

a = (a-min(min(a)))/(max(max(a))-min(min(a)));

else

a = zeros(M,N);

end

if max(max(b))-min(min(b))

b = (b-min(min(b)))/(max(max(b))-min(min(b)));

else

b = zeros(M,N);

end

a = double(int16(a*255))+1;

b = double(int16(b*255))+1;

% 统计直方图

for i=1:M

for j=1:N

indexx = a(i,j);

indexy = b(i,j) ;

hab(indexx,indexy) = hab(indexx,indexy)+1;% 联合直方图

ha(indexx) = ha(indexx)+1;% M1直方图

hb(indexy) = hb(indexy)+1;% M2直方图

end

end

% 联合信息熵

hsum = sum(sum(hab));

index = find(hab~=0);

p = hab/hsum;

Hab = sum(sum(-p(index).*log(p(index))));

% M1信息熵

hsum = sum(sum(ha));

index = find(ha~=0);

p = ha/hsum;

Ha = sum(sum(-p(index).*log(p(index))));

% M2信息熵

hsum = sum(sum(hb));

index = find(hb~=0);

p = hb/hsum;

Hb = sum(sum(-p(index).*log(p(index))));

% M1与M2互信息

mi = Ha+Hb-Hab;

% M1与M2归一化互信息

mi1 = hab/(Ha+Hb);

end

mui=(mutinf1(M1, F)+mutinf1(M2, F));

end

% 均方差函数

function img_var= variance(M1,M2,img)

M1 = double(M1);

M2 = double(M2);

img = double(img);

[r, c] = size(img);

img_var = (sqrt(sum(sum((M1 - img).^2)) / (r * c ))+ sqrt(sum(sum((M2 - img).^2)) / (r * c )))/2;

end

% 峰值信噪比函数

function psnr = psnr(M1,M2,img)

M1 = double(M1);

M2 = double(M2);

img = double(img);

[r, c] = size(img);

psnr = 10.*(log((r * c )/sum(sum((M1 - img).^2)))+log((r * c )/sum(sum((M2 -

img).^2))))/2;

end

% 平均梯度函数

function avg_gra = avg_gradient(img)

if nargin == 1 % 判断输入变量个数

img = double(img);

[r,c,b] = size(img);

dx = 1;

dy = 1;

for k = 1 : b

band = img(:,:,k);

% 沿x与y方向差分

[dzdx,dzdy] = gradient(band,dx,dy);

s = sqrt((dzdx .^ 2 + dzdy .^2) ./ 2);

g(k) = sum(sum(s)) / ((r - 1) * (c - 1));

end

avg_gra = mean(g);

else

error('Wrong number of input!');

end

% 边缘保持度函数

function EDG_pr=edge_preservation(M1, M2, img)

% 源图像与融合图像的梯度幅值与相角

[GA,ALPHA_A,flag1]=SOBEL_EDGE(M1);

[GB,ALPHA_B,flag2]=SOBEL_EDGE(M2);

[GF,ALPHA_F,flag3]=SOBEL_EDGE(img);

% 各像素边缘信息保留程度

QAF=EDGE_PRE_VAL(GA,ALPHA_A,GF,ALPHA_F); QBF=EDGE_PRE_VAL(GB,ALPHA_B,GF,ALPHA_F); % 源图像与融合图像边缘保持度

EDG_pr=NOR_WGT_VAL(QAF,GA,QBF,GB);

end

function [G,ALPHA,flag]=SOBEL_EDGE(img)

% Sobel滤波梯度幅值与相角求取函数

[row,col]=size(img);

plate_H=[-1,-2,-1;0,0,0;-1,-2,-1];

plate_V=[-1,0,-1;-2,0,-2;-1,0,-1];

SX=conv2(img,plate_H,'same');

SY=conv2(img,plate_V,'same');

flag=0;

G=zeros(row,col);

ALPHA=zeros(row,col);

for(i=1:row)

for(j=1:col)

if(SX(i,j)~=0)

temp=SX(i,j)*SX(i,j)+SY(i,j)*SY(i,j);

G(i,j)=sqrt(temp);

ALPHA(i,j)=atan(SY(i,j)/SX(i,j));

if(ALPHA(i,j)<0|G(i,j)==0)

flag=flag+1;

end

end

end

end

end

function QAF=EDGE_PRE_VAL(GA,ALPHA_A,GF,ALPHA_F) % 边缘信息保留程度求取函数

[row,col]=size(GA);

GAF=zeros(row,col);

AAF=zeros(row,col);

%求取源图像与融合图像的相对幅值和相角

for(i=1:row)

for(j=1:col)

if(GA(i,j)>GF(i,j))

GAF(i,j)=GF(i,j)/GA(i,j);

else

GAF(i,j)=GA(i,j)/GF(i,j);

end

end

end

ALPHA_DIF=ALPHA_A-ALPHA_F;

ALPHA_DIF=(abs(ALPHA_DIF)*2)/pi;

AAF=1-ALPHA_DIF;

% 可调节参数取值

GAMA_G=0.9994;

KG=-15;

DELTA_G=0.5;

GAMA_A=0.9879;

KA=-22;

DELTA_A=0.8;

TEMP=exp(KG*(GAF-DELTA_G));

QAF_G=GAMA_G./(1+TEMP);

TEMP=exp(KA*(AAF-DELTA_A));

QAF_ALPHA=GAMA_A./(1+TEMP);

QAF=QAF_G.*QAF_ALPHA;

size(QAF);

sum(sum(QAF));

end

function NWP=NOR_WGT_VAL(QAF,GA,QBF,GB)

% 边缘保持度求取函数

NWP=0;

temp1=(QAF.*GA+QBF.*GB);

temp2=sum(sum(temp1)); temp3=sum(sum(GA+GB)); NWP=temp2/temp3;

end

matlab相关图形实现代码

根据数据点绘制饼图和针状图: x=[1 2 3 4 5 6]; >> subplot(2,2,1);pie(x); >> subplot(2,2,2);pie3(x); >> subplot(2,2,3);stem(x); >>subplot(2,2,4);stem3(x); 5% 10% 14% 19% 24% 29% 24% 29% 19% 5%14% 10%0 2 4 6 2 4 6 5 10 01 2 05 10

根据数据点绘制向量场图、羽状图和罗盘图: x=[1 2 3 4 5 6];y=[1 2 3 4 5 6]; u=[1 2 3 4 5 6];v=[1 2 3 4 5 6]; subplot(2,2,1);quiver(x,y,u,v); subplot(2,2,2);quiver(x,y,u,v,'r'); subplot(2,2,3);feather(u,v); subplot(2,2,4);compass(u,v); 024680 246 802468 246 80 5 10 15 2 4 6 5 10 30 210 60240 90270 120 300 150330 180

rand(m,n)产生m ×n 均匀分布的随机矩阵,元素取值在0.0~1.0。 randn 函数:产生标准正态分布的随机数或矩阵的函数。 Y = randn(m,n) 或 Y = randn([m n])返回一个m*n 的随机项矩阵。 > theta=10*rand(1,50); %确定50个随机数theta >> Z=peaks; %确定Z 为峰值函数peaks >> x=0:0.01:2*pi;y=sin(x); %确定正弦函数数据点x.y >> t=randn(1000,1); %确定1000个随机数t >> subplot(2,2,1);rose(theta); %关于(theta )的玫瑰花图 >> subplot(2,2,2);area(x,y); %关于(x,y)的面积图 >> subplot(2,2,3);contour(Z); %关于Z 的等值线图(未填充) >> subplot(2,2,4);hist(t); %关于t 的柱状图 5 10 30 210 60 240 90270 120300150330 18000246 -1 -0.500.5 110 20 30 40 10 2030 40-4 -2 2 4 100 200 300

matlab 图像的几何变换与彩色处理

实验四、图像的几何变换与彩色处理 一、实验目的 1理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用; 2熟悉图像几何变换的MATLAB操作和基本功能 3 掌握彩色图像处理的基本技术 二、实验步骤 1 启动MATLAB程序,读入图像并对图像文件分别进行平移、垂直镜像变换、水平镜像变换、缩放和旋转操作 %%%%%%平移 >> flowerImg=imread('flower.jpg'); >> se=translate(strel(1),[100 100]); >> img2=imdilate(flowerImg,se); >> subplot(1,2,1); >> imshow(flowerImg); >> subplot(1,2,2); >> imshow(img2);

I1=imread('flower.jpg'); I1=double(I1); H=size(I1); I2(1:H(1),1:H(2),1:H(3))=I1(H(1):-1:1,1:H(2),1:H(3)); I3(1:H(1),1:H(2),1:H(3))=I1(1:H(1),H(2):-1:1,1:H(3)); Subplot(2,2,1); Imshow(uint8(I1)); Title('原图'); Subplot(2,2,2); Imshow(uint8(I3)); Title('水平镜像'); Subplot(2,2,3); Imshow(uint8(I2)); Title('垂直镜像'); img1=imread('flower.jpg'); figure,imshow(img1); %%%%%%缩放 img2=imresize(img1,0.25); figure,imshow(img2); imwrite(img2,'a2.jpg');

基于MATLAB的图像复原

基于MATLAB的图像复原 摘要 随着信息技术的发展,数字图像像已经充斥着人们身边的任意一个角落。由于图像的传送、转换,或者其他原因,可能会造成图像的降质、模糊、变形、质量下降、失真或者其他情况的图像的受损。本设计就针对“图像受损”的问题,在MATLAB环境中实现了利用几何失真校正方法来恢复被损坏的图像。几何失真校正要处理的则是在处理的过程,由于成像系统的非线性,成像后的图像与原图像相比,会产生比例失调,甚至扭曲的图像。 图像复原从理论到实际的操作的实现,不仅能改善图片的视觉效果和保真程度,还有利于后续的图片处理,这对医疗摄像、文物复原、视频监控等领域都具有很重要的意义。 关键字:图像复原;MATLAB;几何失真校正

目录 摘要 (1) 1 MATLAB 6.x 信号处理 (1) 2 图像复原的方法及其应用 (13) 2.1 图像复原的方法 (13) 2.2 图像复原的应用 (14) 3 几何失真校正实现 (15) 3.1 空间变换 (15) 3.1.1 已知()y x r,和()y x s,条件下的几何校正 (16) 3.1.2 ()y x r,和()y x s,未知条件下的几何失真 (16) 3.2 灰度插值 (17) 3.3 结果分析 (19) 参考文献 (20) 附录 (21)

1 MATLAB 6.x信号处理 (1)对MATLAB 6 进行了简介,包括程序设计环境、基本操作、绘图功能、M文件以及MATLAB 6 的稀疏矩阵这五个部分。MATLAB的工作环境有命令窗口、启动平台、工作空间、命令历史记录与当前路径窗口这四部分。M文件的编辑调试环境有四个部分的设置,分别是:Editor/Debugger的参数设置,字体与颜色的设置,显示方式的设置,键盘与缩进的设置。MATLAB采用路径搜索的方法来查找文件系统的M文件,常用的命令文件组在MATLAB文件夹中,其他M文件组在各种工具箱中。基本操作主要是对一些常用的基本常识、矩阵运算及分解、数据分析与统计这三方面进行阐述。MATLAB的基本操作对象时矩阵,所以对于矩阵的输入、复数与复数矩阵、固定变量、获取工作空间信息、函数、帮助命令进行了具体的描述。矩阵运算是MATLAB的基础,所有参与运算的数都被看做为矩阵。MATLAB中共有四大矩阵分解函数:三角分解、正交分解、奇异值分解以及特征值分解。数据分析与统计包括面向列的数据分析、数据预处理、协方差矩阵与相关系数矩阵、曲线拟合这四部分。MATLAB 中含有丰富的图形绘制寒素,包括二维图形绘制、三维图像绘制以及通用绘图工具函数等,同时还包括一些专业绘图函数,因此其具有很强大的绘图功能。简单的二维曲线可以用函数plot来绘制,而简单的三维曲线图则用plot3来绘制。在绘制图形时,MATLAB自动选择坐标轴表示的数值范围,并用一定的数据间隔标记做标注的数据,当然自己也可以指定坐标轴的范围与数据间隔。专业的绘图函数有绘梯度图制条形图、饼图、三维饼图、箭头图、星点图、阶梯图以及等高线。M文件时用户自己通过文本编辑器或字处理器生成的,且其之间可以相互调用,用户可以根据自己的需要,自我编写M文件。M文件从功能上可以分为底稿文件与函数文件两类,其中底稿文件是由一系列MATLAB语句组成的,而函数文件的第一行必须包含关键字“function”,二者的区别在于函数文件可以接受输入参数,并可返回输出参数,而底稿文件不具备参数传递的功能;在函数文件中定义及使用的变量大都是局部变量,只在本函数的工作区内有效,一旦退出该函数,即为无效变量,而底稿文件中定义或使用的变量都是全局变量,在退出文件后仍为有效变量。稀疏矩阵是一种特殊类型的矩阵,

matlab图像处理代码

附录 MATLAB图像处理命令  1.applylut  功能: 在二进制图像中利用lookup表进行边沿操作。 语法: A = applylut(BW,lut) 举例 lut = makelut('sum(x(:)) == 4',2); BW1 = imread('text.tif'); BW2 = applylut(BW1,lut); imshow(BW1) figure, imshow(BW2) 相关命令: makelut 2.bestblk  功能: 确定进行块操作的块大小。 语法: siz = bestblk([m n],k) [mb,nb] = bestblk([m n],k) 举例 siz = bestblk([640 800],72) siz = 64 50 相关命令: blkproc 3.blkproc  功能:

MATLAB 高级应用——图形及影像处理 320 实现图像的显式块操作。 语法: B = blkproc(A,[m n],fun) B = blkproc(A,[m n],fun,P1,P2,...) B = blkproc(A,[m n],[mborder nborder],fun,...) B = blkproc(A,'indexed',...) 举例 I = imread('alumgrns.tif'); I2 = blkproc(I,[8 8],'std2(x)*ones(size(x))'); imshow(I) figure, imshow(I2,[]); 相关命令: colfilt, nlfilter,inline 4.brighten  功能: 增加或降低颜色映像表的亮度。 语法: brighten(beta) newmap = brighten(beta) newmap = brighten(map,beta) brighten(fig,beta) 相关命令: imadjust, rgbplot 5.bwarea  功能: 计算二进制图像对象的面积。 语法: total = bwarea(BW) 举例 BW = imread('circles.tif'); imshow(BW);

基于matlab的图像分析

目录 1 引言 (1) 2 基于MATLAB的FFT算法实现 (2) 2.1系统总体流程图 (2) 2.2 FFT运算规律及编程思想 (2) 2.2.1图像信号的采集 (2) 2.2.2 DIT-FFT算法的基本原理 (3) 2.2.3 FFT算法的运算规律及编程思想 (5) 3 Matlab程序实现 (7) 3.1程序运行结果 (7) 3.2对比结果分析 (8) 4 系统人机对话界面 (9) 4.1 GUI简介 (9) 4.2 界面设计 (9) 4.3 运行调试 (10) 5 Matlab软件简介 (11) 6 心得体会 (12) 参考文献 (13) 附录Ⅰ (14) 附录Ⅱ (18)

1 引言 MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks 公司出品的商数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。它以矩阵运算为基础,把计算、可视化、程序设计融合在一个简单易用的交互式工作环境中,是一款数据分析和处理功能都非常强大的工程适用软件。它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数据滤波、傅立叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱位语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便的完成语音信号的处理和分析以及信号的可视化。数字信号处理是MATLAB重要应用的领域之一。 对于有限长序列x(n),若要求其N点的傅里叶变换(DFT)需要经过2N次复数乘法运算和N*(N-1)次复数加法运算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间和机器内存,不能满足实时的要求。因此,DFT的这种运算只能进行理论上的计算,不适合对实时处理要求高的场合。因此,研究作为DSP的快速算法的FFT是相当必要的,快速傅里叶变换(FFT)是为提高DFT运算速度而采用的一种算法,快速算法的种类很多,而且目前仍在改进和提高,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。基于本学期所学的DIT-FFT的运算规律和编程思想以及Matlab的学习和使用,本课设要求在Matlab环境下编写基2 DIT-FFT算法实现对离散信号的快速傅里叶变换,再与Matlab软件自带的FFT函数实现对离散信号的傅里叶变换进行比较,如果得到的频谱相同,那么我们编写的程序就是正确的。本次课程设计是实现对选定图片进行FFT计算、还原(IFFT计算),并与系统FFT函数做对比,进行分析。如果有能力可以选做系统人机对话界面。用GUI界面完成人机交互方便使用的。本课程设计主要是对数字信号的分析。

数字图像处理matlab代码

一、编写程序完成不同滤波器的图像频域降噪和边缘增强的算法并进行比较,得出结论。 1、不同滤波器的频域降噪 1.1 理想低通滤波器(ILPF) I1=imread('eight.tif'); %读取图像 I2=im2double(I1); I3=imnoise(I2,'gaussian',0.01); I4=imnoise(I3,'salt & pepper',0.01); figure,subplot(1,3,1); imshow(I2) %显示灰度图像 title('原始图像'); %为图像添加标题 subplot(1,3,2); imshow(I4) %加入混合躁声后显示图像 title('加噪后的图像'); s=fftshift(fft2(I4)); %将灰度图像的二维不连续Fourier 变换的零频率成分 移到频谱的中心 [M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整 n2=floor(N/2); %对N/2进行取整 d0=40; %初始化d0 for i=1:M for j=1:N d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if d<=d0 %点(i,j)在通带内的情况 h=1; %通带变换函数 else %点(i,j)在阻带内的情况 h=0; %阻带变换函数 end s(i,j)=h*s(i,j); %ILPF滤波后的频域表示

end end s=ifftshift(s); %对s进行反FFT移动 s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复 数的实部转化为无符号8位整数 subplot(1,3,3); %创建图形图像对象 imshow(s); %显示ILPF滤波后的图像 title('ILPF滤波后的图像(d=40)'); 运行结果: 1.2 二阶巴特沃斯低通滤波器(BLPF) I1=imread('eight.tif'); %读取图像 I2=im2double(I1); I3=imnoise(I2,'gaussian',0.01); I4=imnoise(I3,'salt & pepper',0.01); figure,subplot(1,3,1); imshow(I2) %显示灰度图像 title('原始图像'); %为图像添加标题 subplot(1,3,2); imshow(I4) %加入混合躁声后显示图像 title('加噪后的图像'); s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分 移到频谱的中心 [M,N]=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值

MATLAB实现图像的平移缩放和旋转要点

数字图像处理课程设计 题目图像的几何变换重建 系 (部) 信息工程系 班级 姓名 学号 指导教师 2013 年 12 月 16 日至 12 月 27 日共 2 周 2013年 12 月 27 日

数字图像处理课程设计任务书

课程设计成绩评定表

目录 1 引言 (4) 1.1课程设计的目的.......................... 错误!未定义书签。 1.2课程设计的任务.......................... 错误!未定义书签。 1.3课程设计的要求.......................... 错误!未定义书签。 1.4开发工具................................ 错误!未定义书签。2设计内容 (4) 2.1设计内容 (4) 2.2 系统框图 (4) 3 设计方案 (5) 3.1功能模块的划分 (5) 3.2算法描述 (5) 3.3实现主要功能的原理和方法 (8) 3.3.1最近邻域插值法 (8) 3.3.2双线性插值法 (8) 4功能模块的具体实现 (10) 4.1 模块功能 (10) 4.2流程图 (11) 4.3程序清单及各模块的实现效果图 (11) 4.4 系统仿真与调试 (21) 5 总结与体会 (22) 参考文献 (22) 附录 (23)

1 引言 2设计内容 2.1设计内容 我选取的是图像的几何变换,设计内容如下, (1)能够读取和存储图像。 (2)实现图像的平移、缩放、旋转几何变换。 (3)分别采用最近邻插值和双线性插值技术进行图像重建。 (4)编写代码实现上述功能。 图2-1系统框图 本次课设所做的图像几何变换包括平移变换、缩放变换和旋转变换。缩放变换和旋转变换均用双线性插值变换和最近邻插值变换两种方法来做,对图像进行处理后再存储。

数字图像处理MATLAB相关代码

1.图像反转 MATLAB程序实现如下: I=imread('xian.bmp'); J=double(I); J=-J+(256-1); %图像反转线性变换 H=uint8(J); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(H); 2.灰度线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); subplot(2,2,1),imshow(I); title('原始图像'); axis([50,250,50,200]); axis on; %显示坐标系 I1=rgb2gray(I); subplot(2,2,2),imshow(I1); title('灰度图像'); axis([50,250,50,200]); axis on; %显示坐标系 J=imadjust(I1,[0.1 0.5],[]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1] subplot(2,2,3),imshow(J); title('线性变换图像[0.1 0.5]'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 K=imadjust(I1,[0.3 0.7],[]); %局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1] subplot(2,2,4),imshow(K); title('线性变换图像[0.3 0.7]'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 3.非线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); I1=rgb2gray(I); subplot(1,2,1),imshow(I1); title('灰度图像'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 J=double(I1); J=40*(log(J+1)); H=uint8(J);

MATLAB数字图像处理几何变换傅里叶变换

Matlab数字图像处理实验指导 实验目的: 通过实验,深入理解和掌握图像处理的基本技术,提高动手实践能力。 实验环境: Matlab变成 实验一图像的几何变换 实验内容:设计一个程序,能够实现图像的各种几何变换。 实验要求:读入图像,打开图像,实现图像的平移变换、比例缩放、转置变换、镜像变换、旋转变换等操作。 实验原理: 图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。学习几何变换的关键就是要确定这种空间映射关系,以及映射过程中的变化参数。 几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。一个几何变换需要两部分运算:首先是空间变换所需的运算,如平移、镜像和旋转等,需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。 设原图像f(x0,y0)经过几何变换产生的目标图像为g(x1,y1),则该空间变换(映射)关系可表示为: x1=s(x0,y0) y1=t(x0,y0) 其中,s(x0,y0)和t(x0,y0)为由f(x0,y0)到g(x1,y1)的坐标换变换函数。 一、图像平移 图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。

二、图像镜像 镜像变换又分为水平镜像和垂直镜像。水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行对换;而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中心轴进行对换。 三、图像转置 图像转置是将图像像素的x坐标和y坐标呼唤。图像的大小会随之改变——高度和宽度将呼唤。

图像的几何变换及其matlab实现

数字图像处理论文--图像的几何变换及其MATLAB实现 学院:理学院专业:信息与计算科学 班级:信计1012 姓名: 学号:任课老师: 集美大学理学院 二○一三年十一月二十八日

目录 摘要 (1) 一、何谓数字图像处理 (1) 二、数字图像几何变换简介 (1) 三、MATLAB图像处理工具介绍 (1) 四、图像几何变换的MATLAB实现 (2) 4.1图像几何变换的概述 (2) 4.2 图像的平移变换 (2) 4.3 图像的比例缩放 (4) 4.4 图像的镜像变换 (5) 4.5 图像的旋转变换 (7) 4.6 图像的剪取 (8) 五、图像几何变换的应用以及技术局限 (10) 参考文献 (10)

摘要:图像变换就是把图像从空间域转换到变换域(如频率域)的过程。图像变换可以使人们从另一角度来分析图像信号的特性,利用变换域中特有的性质,使图像处理过程更加简单、有效。图像变换是许多图像处理与分析技术的基础,而几何变换是图像变换中最基础也是应用最广泛的技术之一,本文基于MATLAB的图像处理工具,通过改变图像像素的空间位置或估算新空间位置上的像素值,从而实现图像的平移、缩放、旋转、镜像变换、图像插值等几何变换。 关键字:图像变换、几何变换、MATLAB 一、何谓数字图像处理 数字图像处理(Digital Image Processing),就是利用数字计算机或则其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。 二、数字图像几何变换简介[3] 今天数字技术时代,我们身边接触到很多的数字图像,而对数字图像的处理往往会遇到需要对图像进行几何变换的一些问题。图像几何变换是图像显示技术中的一个重要组成部分。在图像几何变换中主要包括图像的缩放、旋转、移动、剪取等内容。无论照片、图画、书报、还是医学X光和卫星遥感图像等领域都会用到这些技术。通过图像的几何变换技术,可以显著提高图像处理效率和质量,为更进一步的图像处理奠定基础。 三、MATLAB图像处理工具介绍[1] MATLAB全称是Matrix Laboratory(矩阵实验室),一开始它是一种专门用于矩阵数值

图像处理实例(含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图像融合

一、实验原理 本实验对源图像分别进行Harr 小波变换,建立图像的小波塔形分解,然后对分解层进行融合,处理各分解层上的不同频域分量可以采用不同的融合算子进行融合处理,本实验采用统一的算法处理,得到融合后的小波金字塔,对融合后的小波金字塔进行小波逆变换,得到的重构图像为拼接图像 1、 Harr 小波变换 Harr 小波分解步骤: 步骤一:输入信号n S 有2n 个样本, 步骤二:将信号分成1,2,2,,0 2n n l n l a S b S l -===,一共12n -对,然后对每一对变换,获得均值1n S -和差值1n d -。,21,212n l n l n S S S +-+=,1,,21,2n l n l n l d S S -+=-反变换可以无损地从 1n S -和1n d -中恢复出原信号,1n S -作为信号的全局信息(低频成分) ,1n d -作为信号的细节信息(高频成分),全局信息和原信号比较相似(局部一致性),细节信息(差值比较小)可以很高效的进行表示。 步骤三:对1n S -实施同样的变换(求均值和差值),获得均值2n S -和差值2n d -,它们两各有22n -个样本值。 步骤四:重复上面的变换步骤,直到0S 中仅有一个元素为止。 2、图像拼接算法 本实验采用小波分解的图像处理方法,首先对图形进小波变换,然后采用分层比较法,对两幅图的一级分解的LL 层进行比较,从而获得准确的位置匹配,然后各层进行相应的位置衔接,得到拼接图像的一级小波分解图像,最后对分解图像进行重构,得到拼接后的图像。 步骤一:首先对两图进行Harr 小波一级分解,假设分解图像如下图。 图一的harr 小波分解 图二的harr 小波分解 步骤二:对一级分解LL 层进行位置匹配。首先求出两幅图的LL 图像梯度值,即图像灰度值的显著变化的地方,采用如下公式 21(1,)mag i j -=

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像imread Syntax: A = imread(, fmt) :指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到所制定的文件,会尝试查找一个名为的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含RGB 真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(, 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() himage = imshow(...)

●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像素在图像中出现的概率。 图像的灰度直方图:是一个离散函数,表示图像每一灰度级与该灰度级出现概率的对应关系。 图像的灰度直方图运算: imhist()函数,其横坐标表示像素的灰度级别,纵坐标为像素点的个数。 ●Imhist函数=Display histogram of image data显示灰度直方图的函数 ●Syntax: ①imhist(I) % I为要计算的灰度直方图图像 ②imhist(I, n) % n指定的灰度级的数目,表示所有灰度级均匀分布在n个小区间内。 ③imhist(X, map) ④[counts,x] = imhist(...) %counts直方图数据向量。counts(i)第i个灰度区间中的像素数目。x是保存了对应的灰度小区间的向量。 注意:若调用时不接受这个函数的返回值,则直接显示直方图;在得这些返回数据之后,也可以使用stem(x,counts)手绘直方图。 ●例1:显示某一图像的灰度直方图

matlab数字图像处理源代码

数字图像去噪典型算法及matlab实现 希望得到大家的指点和帮助 图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响 到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 目前比较经典的图像去噪算法主要有以下三种: 均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度 的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊, 可以对其进行改进,主要避开对景物边缘的平滑处理。 中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。 实验一:均值滤波对高斯噪声的效果 l=imread('C:\Documents and 桌面\1.gif');% 读取图像

J=imnoise(l,'gaussian',0,0.005);% 加入均值为0 ,方差为 0.005 的高斯噪声subplot(2,3,1);imshow(l); title(' 原始图像'); subplot(2,3,2); imshow(J); ti tle('加入高斯噪声之后的图像’); %采用MATLAB 中的函数filter2 对受噪声干扰的图像进行均值滤波 K1=filter2(fspecial('average',3),J)/255; % 模板尺寸为3 K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5 K3=filter2(fspecial('average',7),J)/255; % 模板尺寸为7 K4= filter2(fspecial('average',9),J)/255; % 模板尺寸为9 subplot(2,3,3);imshow(K1); ti tle(' 改进后的图像1'); subplot(2,3,4); imshow(K2); title(' 改进后的图像2'); subplot(2,3,5);imshow(K3); title(' 改进后的图像3'); subplot(2,3,6);imshow(K4); title(' 改进后的图像4');

图像几何变换的理论及MATLAB实现.

第 25卷第 4期《新疆师范大学学报》 (自然科学版 V o l . 25, N o . 4 2006年12月 Journal of X injiang N o r m al U niversity D ec . 2006 (N atural Sciences Editi on 图像几何变换的理论及 M A TLAB 实现 古丽娜 1, 2, 木妮娜 3 (1. 西北师范大学教育技术与传播学院 , 甘肃兰州 730070; 2. 新疆师范大学教育科学学院 , 新疆乌鲁木齐 830054; 3. 新疆师范大学数理信息学院 , 新疆乌鲁木齐830054 α 摘要 :, 。在图像几何变换中主要包括图像的缩放、图像的旋转、、 (主要包括图像的缩放、旋转、 , A 。 关键词 :; 缩放 ; 旋转 ; 移动 ; 剪取 T P 391. 4文献标识码 : A 文章编号 : 1008296592(2006 20420024205 1引言 从 20世纪 60年代美国航空和太空总署 (N A SA 的喷气推进实验室第一次使用计算机对太空船发回的大批月球图片进行处理到信息技术不断提高的今天 , 数字图像的应用处理技术得到了广泛的应用 , 形成了自己的技术特色和完善的学科体系。 我们在处理图像时往往会遇到需要对图像进行几何变换的一些问题。图像几何变换是图像显示技术中的一个重要组成部分 , 也是我们学习和探讨的一个重要课题。在图像几何变换中主要包括图像的缩放、旋转、移动、剪取等内容。其中使用最频繁的是图像的缩放和旋转 , 不论照片、图画、书报、还是医学 X 光和卫星遥感图像都会用到这两项技术。

实验一Matlab图像处理基础及图像灰度变换 - 中南大学信.

实验一Matlab图像处理基础及图像灰度变换 一、实验目的 了解Matlab平台下的图像编程环境,熟悉Matlab中的DIP (Digital Image Processing)工具箱;掌握Matlab中图像的表示方法,图像类型、数据类型的种类及各自的特点,并知道怎样在它们之间进行转换。掌握Matlab环境下的一些最基本的图像处理操作,如读图像、写图像、查看图像信息和格式、尺寸和灰度的伸缩等等;通过实验掌握图像直方图的描绘方法,加深直方图形状与图像特征间关系间的理解;加深对直方图均衡算法的理解。 二、实验内容 1.从硬盘中读取一幅灰度图像; 2.显示图像信息,查看图像格式、大小、位深等内容; 3.用灰度面积法编写求图像方图的Matlab程序,并画图; 4.把第3步的结果与直接用Matlab工具箱中函数histogram的结果进行比较,以衡量第3步中程序的正确性。 5.对读入的图像进行直方图均衡化,画出处理后的直方图,并比较处理前后图像效果的变化。 三、知识要点 1.Matlab6.5支持的图像图形格式 TIFF, JEPG, GIF, BMP, PNG, XWD (X Window Dump),其中GIF不支持写。 2.与图像处理相关的最基本函数 读:imread; 写:imwrite; 显示:imshow; 信息查看:imfinfo; 3.Matlab6.5支持的数据类 double, unit8, int8, uint16, int16, uint32, int32, single, char (2 bytes per element), logical. 4.Matlab6.5支持的图像类型 Intensity images, binary images, indexed images, RGB image 5.数据类及图像类型间的基本转换函数 数据类转换:B = data_class_name(A);

基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码

本文主要介绍基于Retinex理论的雾霭天气图像增强及其实现。并通过编写两个程序来实现图像的去雾功能。 1 Rentinex理论 Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land(埃德温?兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种图像增强方法。Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。 根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8.3-1所示。 图-1 Retinex理论示意图 对于观察图像S中的每个点(x,y),用公式可以表示为: S(x,y)=R(x,y)×L(x,y) (1.3.1)实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了入射光L的性质从而得到物体原本该有的样子。 2 基于Retinex理论的图像增强的基本步骤 步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即: S'(x, y)=r(x, y)+l(x, y)=log(R(x, y))+log(L(x, y)); 步骤二:用高斯模板对原图像做卷积,即相当于对原图像做低通滤波,得到低通滤波后的图像D(x,y),F(x, y)表示高斯滤波函数: D(x, y)=S(x, y) *F(x, y); 步骤三:在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像G (x, y): G(x,y)=S'(x, y)-log(D(x, y)) ;

matlab图像几何变换和图像增强

一.图像几何变化 (1)放大,缩小,旋转 程序: I=imread('111.jpg'); J=imresize(I,1.5); L=imresize(I,0.75); K=imrotate(I,35,'bilinear'); subplot(221),subimage(I); title('原图像'); subplot(222),subimage(J); title('放大后图像'); subplot(223),subimage(L); title('缩小后图像'); subplot(224),subimage(K);title('旋转后图像'); 二.图像频域变换 (1)傅里叶变换 真彩图像灰度图像傅里叶变换谱程序:I=imread('111.jpg'); figure(1); imshow(I); B=rgb2gray(I); figure(2);

imshow(B) D=fftshift(fft2(B)); figure(3); imshow(log(abs(D)),[ ]); (2)离散余弦变换 真彩图灰度图进行离散余弦变换后程序: RGB=imread('111.jpg'); figure(1); imshow(RGB); G=rgb2gray(RGB); figure(2); imshow(G); DCT=dct2(G); figure(3); imshow(log(abs(DCT)),[]); 三.图像增强: (1)指数变换 程序:

f=imread('111.jpg') f=double(f); g=(2^2*(f-1))-1; f=uint8(f); g=uint8(g); subplot(1,2,1),subimage(f); subplot(1,2,2),subimage(g); (2)直方图均衡 程序: I=imread('111.jpg'); I=rgb2gray(I); figure subplot(221);imshow(I); subplot(222);imhist(I) I1=histeq(I); figure; subplot(221);imshow(I1) subplot(222);imhist(I1) (3)空域滤波增强 锐化滤波(Roberts算子Sobel算子拉普拉斯算子)

相关文档
最新文档