数字图像处理程序若干(matlab)
数字图像处理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; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if d<=d0 %点(i,j)在通带内的情况h=1; %通带变换函数else %点(i,j)在阻带内的情况h=0; %阻带变换函数ends(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=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赋初值n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=1/(1+(d/d0)^(2*n)); %BLPF滤波函数s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('BLPF滤波后的图像(d=40)');实验结果:1.3 指数型低通滤波器(ELPF)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;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=exp(log(1/sqrt(2))*(d/d0)^2);s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('ELPF滤波后的图像(d=40)');运行结果:1.4 梯形低通滤波器(TLPF)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=10;d1=160;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if (d<=d0)h=1;else if (d0<=d1)h=(d-d1)/(d0-d1);else h=0;endends(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('TLPF滤波后的图像'); %为图像添加标题运行结果:1.5 高斯低通滤波器(GLPF)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;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('GLPF滤波后的图像(d=40)');运行结果:1.6 维纳滤波器[B,Cmap]=imread('eight.tif'); %读取MATLAB中的名为eight的图像I1=im2double(B);I2=imnoise(I1,'gaussian',0.01);I3=imnoise(I2,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I1) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I3) %加入混合躁声后显示图像title('加噪后的图像');I4=wiener2(I3);subplot(1,3,3);imshow(I4); %显示wiener滤波后的图像title('wiener滤波后的图像');运行结果:结论:理想低通滤波器,虽然有陡峭的截止频率,却不能产生良好的效果,图像由于高频分量的滤除而变得模糊,同时还产生振铃效应。
数字图像处理与应用(MATLAB版)课后题答案
第一章1. 什么是图像?如何区分数字图像和模拟图像?模拟图像和数字图像如何相互转换?答:图像是当光辐射能量照在物体上,经过反射或透射,或由发光物体本身发出的光能量,在人的视觉器官中所重现出的物体的视觉信息。
数字图像将图像看成是许多大小相同、形状一致的像素组成。
这样,数字图像可以用二维矩阵表示。
将自然界的图像通过光学系统成像并由电子器件或系统转化为模拟图像(连续图像)信号,再由模拟/数字转化器(ADC)得到原始的数字图像信号。
图像的数字化包括离散和量化两个主要步骤。
在空间将连续坐标过程称为离散化,而进一步将图像的幅度值(可能是灰度或色彩)整数化的过程称为量化。
2. 什么是数字图像处理?答:数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。
3. 数字图像处理系统有哪几部分组成?各部分的主要功能和常见设备有哪些?答:一个基本的数字图像处理系统由图像输入、图像存储、图像输出、图像通信、图像处理和分析5个模块组成,如下图所示。
各个模块的作用分别为:图像输入模块:图像输入也称图像采集或图像数字化,它是利用图像采集设备(如数码照相机、数码摄像机等)来获取数字图像,或通过数字化设备(如图像扫描仪)将要处理的连续图像转换成适于计算机处理的数字图像。
图像存储模块:主要用来存储图像信息。
图像输出模块:将处理前后的图像显示出来或将处理结果永久保存。
图像通信模块:对图像信息进行传输或通信。
图像处理与分析模块:数字图像处理与分析模块包括处理算法、实现软件和数字计算机,以完成图像信息处理的所有功能。
4. 试述人眼的主要特性。
答:(1)、人眼的视觉机理。
视网膜上有大量的杆状细胞和锥状细胞,锥状细胞能辨别光的颜色,而杆状细胞感光灵敏度高,但不能辨色。
(2)、人眼的视敏特性。
指人眼对不同波长的光具有不同的敏感程度。
(3)、人眼的亮度感觉。
亮度感觉范围指人眼所能感觉到的最大亮度与最小亮度之间的范围。
(完整版)数字图像处理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); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
数字图像处理及应用(MATLAB)第1章习题答案
第一章:习题与思考题参考答案1-1 什么是数字图像? 数字图像处理有哪些特点?数字图像是将连续的模拟图像经过离散化处理后变成计算机能够辨识的点阵图像。
数字图像处理具有以下特点:(1)处理精度高,再现性好。
(2)易于控制处理效果。
(3)处理的多样性。
(4)数字图像中各个像素间的相关性大,压缩的潜力很大。
(5)图像数据量庞大。
(6) 占用的频带较宽。
(7) 图像质量评价受主观因素的影响。
(8)图像处理技术综合性强。
1-2 数字图像处理的目的及主要内容。
一般而言,对图像进行处理主要有以下三个方面的目的(1) 提高图像的视感质量,以达到赏心悦目的目的。
(2) 提取图像中所包含的某些特征或特殊信息,以便于计算机分析。
(3) 对图像数据进行变换、编码和压缩,以便于图像的存储和传输。
数字图像处理的主要研究内容:根据其主要的处理流程与处理目标大致可以分为图像信息的描述、图像信息的处理、图像信息的分析、图像信息的编码以及图像信息的显示等几个方面。
如:图像数字化、图像增强、图像几何变换、图像复原、图像重建、图像隐藏、图像正交变换、图像编码、图像分析等。
1-3 数字图像处理的主要应用图像处理技术广泛用于众多的科学与工程领域,主要有:(1)生物医学领域中的应用(2)工业应用(3)遥感航天中的应用(4)军事、公安领域中的应用(5)其他应用,例如:图像的远距离通信;多媒体计算机系统及应用;服装试穿显示;办公自动化、现场视频管理1-4 在理想情况下获得一幅数字图像时,采样和量化间隔越小,图像的画面效果越好,当一幅图像的数据量被限定在一个范围内时,如何考虑图像的采样和量化使得图像的质量尽可能好。
一般,当限定数字图像的大小时, 为了得到质量较好的图像可采用如下原则: (1)对缓变的图像,应该细量化,粗采样,以避免假轮廓。
(2)对细节丰富的图像,应细采样,粗量化,以避免模糊(混叠)。
1-5 想想在你的工作和生活中,遇见过哪些数字化设备?它们的主要用途是什么?主要有以下几种数字化设备:(1) 图像采集卡通常图像采集卡安装于计算机主板扩展槽中,通过主机发出指令,将某一帧图像静止在存储通道中,即采集或捕获一帧图像,然后可对图像进行处理或存盘。
数字图像处理课程设计报告matlab
数字图像处理课程设计报告姓名:学号:班级: .net设计题目:图像处理教师:赵哲老师提交日期: 12月29日一、设计内容:主题:《图像处理》详细说明:对图像进行处理(简单滤镜,模糊,锐化,高斯模糊等),对图像进行处理(上下对称,左右对称,单双色显示,亮暗程度调整等),对图像进行特效处理(反色,实色混合,色彩平衡,浮雕效果,素描效果,雾化效果等),二、涉及知识内容:1、二值化2、各种滤波3、算法等三、设计流程图四、实例分析及截图效果:运行效果截图:第一步:读取原图,并显示close all;clear;clc;% 清楚工作窗口clc 清空变量clear 关闭打开的窗口close allI=imread('1.jpg');% 插入图片1.jpg 赋给Iimshow(I);% 输出图II1=rgb2gray(I);%图片变灰度图figure%新建窗口subplot(321);% 3行2列第一幅图imhist(I1);%输出图片title('原图直方图');%图片名称一,图像处理模糊H=fspecial('motion',40);%% 滤波算子模糊程度40 motion运动q=imfilter(I,H,'replicate');%imfilter实现线性空间滤波函数,I图经过H滤波处理,replicate反复复制q1=rgb2gray(q);imhist(q1);title('模糊图直方图');二,图像处理锐化H=fspecial('unsharp');%锐化滤波算子,unsharp不清晰的qq=imfilter(I,H,'replicate');qq1=rgb2gray(qq);imhist(qq1);title('锐化图直方图');三,图像处理浮雕(来源网络)%浮雕图l=imread('1.jpg');f0=rgb2gray(l);%变灰度图f1=imnoise(f0,'speckle',0.01);%高斯噪声加入密度为0.01的高斯乘性噪声 imnoise噪声污染图像函数 speckle斑点f1=im2double(f1);%把图像数据类型转换为双精度浮点类型h3=1/9.*[1 1 1;1 1 1;1 1 1];%采用h3对图像f2进行卷积滤波f4=conv2(f1,h3,'same');%进行sobel滤波h2=fspecial('sobel');g3=filter2(h2,f1,'same');%卷积和多项式相乘 same相同的k=mat2gray(g3);% 实现图像矩阵的归一化操作四,图像处理素描(来源网络)f=imread('1.jpg');[VG,A,PPG] = colorgrad(f);ppg = im2uint8(PPG);ppgf = 255 - ppg;[M,N] = size(ppgf);T=200;ppgf1 = zeros(M,N);for ii = 1:Mfor jj = 1:Nif ppgf(ii,jj)<Tppgf1(ii,jj)=0;elseppgf1(ii,jj)=235/(255-T)*(ppgf(ii,jj)-T);endendendppgf1 = uint8(ppgf1);H=fspecial('unsharp');Motionblur=imfilter(ppgf1,H,'replicate');figure;imshow(ppgf1);调用function [VG, A, PPG] = colorgrad(f, T)if (ndims(f)~=3) || (size(f,3)~=3)error('Input image must be RGB');endsh = fspecial('sobel');sv = sh';Rx = imfilter(double(f(:,:,1)), sh, 'replicate');Ry = imfilter(double(f(:,:,1)), sv, 'replicate');Gx = imfilter(double(f(:,:,2)), sh, 'replicate');Gy = imfilter(double(f(:,:,2)), sv, 'replicate');Bx = imfilter(double(f(:,:,3)), sh, 'replicate');By = imfilter(double(f(:,:,3)), sv, 'replicate');gxx = Rx.^2 + Gx.^2 + Bx.^2;gyy = Ry.^2 + Gy.^2 + By.^2;gxy = Rx.*Ry + Gx.*Gy + Bx.*By;A = 0.5*(atan(2*gxy./(gxx-gyy+eps)));G1 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(2*A) + 2*gxy.*sin(2*A));A = A + pi/2;G2 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(2*A) + 2*gxy.*sin(2*A)); G1 = G1.^0.5;G2 = G2.^0.5;VG = mat2gray(max(G1, G2));RG = sqrt(Rx.^2 + Ry.^2);GG = sqrt(Gx.^2 + Gy.^2);BG = sqrt(Bx.^2 + By.^2);PPG = mat2gray(RG + GG + BG);if nargin ==2VG = (VG>T).*VG;PPG = (PPG>T).*PPG;endf1=rgb2gray(f);imhist(f1);title('素描图直方图');五,图像处理实色混合(来源网络)%实色混合I(I<=127)=0; %对像素进行处理,若值小于等于127,置0 I(I>127)=255; %对像素进行处理,若值大于127,置255 imshow(I);title('像素图');I1=rgb2gray(f);imhist(I1);title('像素图直方图');六,图像处理反色图f=imread('1.jpg');q=255-q;imshow(q);title('反色图');imhist(q1);title('反色图直方图');七,图像处理上下对称A=imread('1.jpg');B=A;[a,b,c]=size(A);a1=floor(a/2); b1=floor(b/2); c1=floor(c/2);B(1:a1,1:b,1:c)=A(a:-1:a-a1+1,1:b,1:c);figureimshow(B)title('上下对称');A=rgb2gray(A);figureimhist(A)title('上下对称直方图');八,图像处理类左右对称C=imread('1.jpg');A=C;C(1:a,1:b1,1:c)=A(1:a,b:-1:b+1-b1,1:c);figureimshow(C)title('左右对称');A=rgb2gray(A);figureimhist(A);title('左右对称直方图');九,图像处理单双色显示a=imread('1.jpg');a1=a(:,:,1);a2=a(:,:,2); a3=a(:,:,3);aa=rgb2gray(a);a4=cat(3,a1,aa,aa); a5=cat(3,a1,a2,aa);figuresubplot(121);imshow(a4);title('单色显示');subplot(122);imshow(a5);title('双色显示');a4=rgb2gray(a4);a5=rgb2gray(a5);figuresubplot(121);imhist(a4);title('单色显示直方图');subplot(122);imhist(a5);title('双色显示直方图');十,图像处理亮暗度调整a=imread('1.jpg');a1=0.8*a;figuresubplot(121);imshow(a1);title('暗图');subplot(122);imshow(a2);title('亮图')q3=rgb2gray(a1);q4=rgb2gray(a2);figuresubplot(121);mhist(q3);title('暗图直方图') subplot(122);imhist(q4);title('亮图直方图')十一,图像处理雾化处理q=imread('1.jpg');m=size(q,1);n=size(q,2);r=q(:,:,1);g=q(:,:,2);b=q(:,:,3);for i=2:m-10for j=2:n-10k=rand(1)*10;%产生一个随机数作为半径di=i+round(mod(k,33));%得到随机横坐标dj=j+round(mod(k,33));%得到随机纵坐标r(i,j)=r(di,dj);%将原像素点用随机像素点代替 g(i,j)=g(di,dj);b(i,j)=b(di,dj);endenda(:,:,1)=r;a(:,:,2)=g;a(:,:,3)=b;imshow(a)title('雾化处理图');q=rgb2gray(a);figureimhist(q);title('雾化处理图直方图');十二,图像处理高斯滤波I = imread('1.jpg');G =fspecial('gaussian', [5 5], 2);% fspecial生成一个高斯滤波器Ig =imfilter(I,G,'same');%imfilter使用该滤波器处理图片imshow(Ig);title('高斯滤波');I1=rgb2gray(Ig);imhist(I1);title('高斯滤波直方图');十三,图像处理色彩平衡(来自网络)im=imread('1.jpg');im2=im;%存储元图像im1=rgb2ycbcr(im);%将im RGB图像转换为YCbCr空间。
(完整版)数字图像处理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); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
数字图像处理及MATLAB实现[杨杰][电子教案]第二章
距离 像素之间的联系常与像素在空间的接近程度有 关。像素在空间的接近程度可以用像素之间的距 离来度量。为测量距离需要定义距离度量函数。 给定 p, q, r 三个像素,其坐标分别为 ( x, y ), ( s, t ), (u , v) 如果 1) D ( p, q ) ≥ 0( D ( p, q ) = 0 当且仅当 p = q ) 2) D ( p, q ) = D ( q, p ) 3) D ( p, r ) ≤ D ( p, q ) = D (q, r ) 则 D是距离函数或度量。
p 和 q 之间的欧式距离定义为:
De ( p, q) = ( x − s)2 + ( y − t )2
p 和 q 之间的 D4距离(也叫城市街区距离)定义为:
D4 ( p , q ) = x-s + y-t
p 和 q 之间的 D8 距离(也叫棋盘距离)定义为:
D8 ( p, q )=max( x-s , ) y-t
图像获取即图像的数字化过程,包括扫描、 图像获取即图像的数字化过程,包括扫描、 采样和量化。 采样和量化。 图像获取设备由5个部分组成 采样孔, 个部分组成: 图像获取设备由 个部分组成:采样孔, 扫描机构,光传感器, 扫描机构,光传感器,量化器和输出存储 体。 关键技术有:采样——成像技术;量化 成像技术; 关键技术有:采样 成像技术 量化— —模数转换技术。 模数转换技术。 模数转换技术
Sampling
图像的采样
图2.15图像的采样示例 图像的采样示例
Quantization 图像的量化
图2.16图像的量化示例 图像的量化示例
量化等级越多,所得图像层次越丰富, 量化等级越多,所得图像层次越丰富,灰度 分辨率高,图像质量好,但数据量大; 分辨率高,,图像层次欠丰富,灰度分辨 量化等级越少,图像层次欠丰富, 率低,会出现假轮廓现象,图像质量变差, 率低,会出现假轮廓现象,图像质量变差, 但数据量小. 但数据量小
数字图像处理matlab课程设计
数字图像处理matlab课程设计一、教学目标本课程的教学目标是使学生掌握数字图像处理的基本理论和方法,学会使用MATLAB软件进行图像处理和分析。
通过本课程的学习,学生应达到以下具体目标:1.理解数字图像处理的基本概念、原理和算法。
2.熟悉MATLAB图像处理工具箱的使用。
3.能够运用数字图像处理的基本算法解决实际问题。
4.能够使用MATLAB进行图像处理和分析,撰写相关的程序代码。
情感态度价值观目标:1.培养学生的创新意识和团队协作精神。
2.培养学生对数字图像处理技术的兴趣,提高其综合素质。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.数字图像处理基本概念:图像处理的基本概念、图像数字化、图像表示和图像变换。
2.图像增强和复原:图像增强、图像去噪、图像复原。
3.图像分割和描述:图像分割、图像特征提取和描述。
4.图像形态学:形态学基本运算、形态学滤波、形态学重建。
5.MATLAB图像处理工具箱的使用:MATLAB图像处理工具箱的基本功能、常用图像处理函数。
6.图像处理实例分析:结合实际案例,分析数字图像处理技术的应用。
三、教学方法为了实现课程目标,本课程将采用以下教学方法:1.讲授法:通过讲解图像处理的基本概念、原理和算法,使学生掌握图像处理的基本知识。
2.案例分析法:通过分析实际案例,使学生了解数字图像处理技术在实际中的应用。
3.实验法:通过上机实验,使学生熟练掌握MATLAB图像处理工具箱的使用,提高学生的实际操作能力。
4.讨论法:学生进行课堂讨论,激发学生的思维,培养学生的创新意识和团队协作精神。
四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《数字图像处理(MATLAB版)》。
2.参考书:相关领域的经典教材和论文。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、MATLAB软件、图像处理相关硬件设备。
五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面、客观、公正地评价学生的学习成果。
数字图像处理 matlab代码
MATLAB实用源代码图像读取及灰度变换I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题图像旋转I = imread('cameraman.tif');figure,imshow(I);theta = 30;K = imrotate(I,theta); % Try varying the angle, theta. figure, imshow(K)边缘检测I = imread('cameraman.tif');J1=edge(I,'sobel');J2=edge(I,'prewitt');J3=edge(I,'log');subplot(1,4,1),imshow(I);subplot(1,4,2),imshow(J1);subplot(1,4,3),imshow(J2);subplot(1,4,4),imshow(J3);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);subplot(1,2,2),imshow(H);title(' 对数变换图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系4.直方图均衡化MATLAB 程序实现如下:I=imread('xian.bmp');I=rgb2gray(I);figure;subplot(2,2,1);imshow(I);subplot(2,2,2);imhist(I);I1=histeq(I);figure;subplot(2,2,1);imshow(I1);subplot(2,2,2);imhist(I1);5. 线性平滑滤波器用MA TLAB实现领域平均法抑制噪声程序:I=imread('xian.bmp');subplot(231)imshow(I)title('原始图像')I=rgb2gray(I);I1=imnoise(I,'salt & pepper',0.02);subplot(232)imshow(I1)title(' 添加椒盐噪声的图像')k1=filter2(fspecial('average',3),I1)/255; %进行3*3模板平滑滤波k2=filter2(fspecial('average',5),I1)/255; %进行5*5模板平滑滤波k3=filter2(fspecial('average',7),I1)/255; %进行7*7模板平滑滤波k4=filter2(fspecial('average',9),I1)/255; %进行9*9模板平滑滤波subplot(233),imshow(k1);title('3*3 模板平滑滤波');subplot(234),imshow(k2);title('5*5 模板平滑滤波');subplot(235),imshow(k3);title('7*7 模板平滑滤波');subplot(236),imshow(k4);title('9*9 模板平滑滤波');6.中值滤波器用MA TLAB实现中值滤波程序如下:I=imread('xian.bmp');I=rgb2gray(I);J=imnoise(I,'salt&pepper',0.02);subplot(231),imshow(I);title('原图像');subplot(232),imshow(J);title('添加椒盐噪声图像');k1=medfilt2(J); %进行3*3模板中值滤波k2=medfilt2(J,[5,5]); %进行5*5模板中值滤波k3=medfilt2(J,[7,7]); %进行7*7模板中值滤波k4=medfilt2(J,[9,9]); %进行9*9模板中值滤波subplot(233),imshow(k1);title('3*3模板中值滤波');subplot(234),imshow(k2);title('5*5模板中值滤波');subplot(235),imshow(k3);title('7*7模板中值滤波');subplot(236),imshow(k4);title('9*9 模板中值滤波');7.用Sobel算子和拉普拉斯对图像锐化:I=imread('xian.bmp');subplot(2,2,1),imshow(I);title('原始图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I);subplot(2,2,2),imshow(I1);title('二值图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系H=fspecial('sobel'); %选择sobel算子J=filter2(H,I1); %卷积运算subplot(2,2,3),imshow(J);title('sobel算子锐化图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系h=[0 1 0,1 -4 1,0 1 0]; %拉普拉斯算子J1=conv2(I1,h,'same'); %卷积运算subplot(2,2,4),imshow(J1);title('拉普拉斯算子锐化图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系8.梯度算子检测边缘用MA TLAB实现如下:I=imread('xian.bmp');subplot(2,3,1);imshow(I);title('原始图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I);subplot(2,3,2);imshow(I1);title('二值图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I2=edge(I1,'roberts');figure;subplot(2,3,3);imshow(I2);title('roberts算子分割结果');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I3=edge(I1,'sobel');subplot(2,3,4);imshow(I3);title('sobel算子分割结果');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I4=edge(I1,'Prewitt');subplot(2,3,5);imshow(I4);title('Prewitt算子分割结果');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系9.LOG算子检测边缘用MA TLAB程序实现如下:I=imread('xian.bmp');subplot(2,2,1);imshow(I);title('原始图像');I1=rgb2gray(I);subplot(2,2,2);imshow(I1);title('灰度图像');I2=edge(I1,'log');subplot(2,2,3);imshow(I2);title('log算子分割结果');10.Canny算子检测边缘用MA TLAB程序实现如下:I=imread('xian.bmp');subplot(2,2,1);imshow(I);title('原始图像')I1=rgb2gray(I);subplot(2,2,2);imshow(I1);title('灰度图像');I2=edge(I1,'canny');subplot(2,2,3);imshow(I2);title('canny算子分割结果');11.边界跟踪(bwtraceboundary函数)clcclear allI=imread('xian.bmp');figureimshow(I);title('原始图像');I1=rgb2gray(I); %将彩色图像转化灰度图像threshold=graythresh(I1); %计算将灰度图像转化为二值图像所需的门限BW=im2bw(I1, threshold); %将灰度图像转化为二值图像figureimshow(BW);title('二值图像');dim=size(BW);col=round(dim(2)/2)-90; %计算起始点列坐标row=find(BW(:,col),1); %计算起始点行坐标connectivity=8;num_points=180;contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_points);%提取边界figureimshow(I1);hold on;plot(contour(:,2),contour(:,1), 'g','LineWidth' ,2);title('边界跟踪图像');12.Hough变换I= imread('xian.bmp');rotI=rgb2gray(I);subplot(2,2,1);imshow(rotI);title('灰度图像');axis([50,250,50,200]);grid on;axis on;BW=edge(rotI,'prewitt');subplot(2,2,2);imshow(BW);title('prewitt算子边缘检测后图像');axis([50,250,50,200]);grid on;axis on;[H,T,R]=hough(BW);subplot(2,2,3);imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');title('霍夫变换图');xlabel('\theta'),ylabel('\rho');axis on , axis normal, hold on;P=houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));x=T(P(:,2));y=R(P(:,1));plot(x,y,'s','color','white');lines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);subplot(2,2,4);,imshow(rotI);title('霍夫变换图像检测');axis([50,250,50,200]);grid on;axis on;hold on;max_len=0;for k=1:length(lines)xy=[lines(k).point1;lines(k).point2];plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');len=norm(lines(k).point1-lines(k).point2);if(len>max_len)max_len=len;xy_long=xy;endendplot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');13.直方图阈值法用MA TLAB实现直方图阈值法:I=imread('xian.bmp');I1=rgb2gray(I);figure;subplot(2,2,1);imshow(I1);title(' 灰度图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系[m,n]=size(I1); %测量图像尺寸参数GP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255GP(k+1)=length(find(I1==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置endsubplot(2,2,2),bar(0:255,GP,'g') %绘制直方图title('灰度直方图')xlabel('灰度值')ylabel(' 出现概率')I2=im2bw(I,150/255);subplot(2,2,3),imshow(I2);title('阈值150的分割图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I3=im2bw(I,200/255); %subplot(2,2,4),imshow(I3);title('阈值200的分割图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系14. 自动阈值法:Otsu法用MA TLAB实现Otsu算法:clcclear allI=imread('xian.bmp');subplot(1,2,1),imshow(I);title('原始图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系level=graythresh(I); %确定灰度阈值BW=im2bw(I,level);subplot(1,2,2),imshow(BW);title('Otsu 法阈值分割图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系15.膨胀操作I=imread('xian.bmp'); %载入图像I1=rgb2gray(I);subplot(1,2,1);imshow(I1);title('灰度图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系se=strel('disk',1); %生成圆形结构元素I2=imdilate(I1,se); %用生成的结构元素对图像进行膨胀subplot(1,2,2);imshow(I2);title(' 膨胀后图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系16.腐蚀操作MATLAB 实现腐蚀操作I=imread('xian.bmp'); %载入图像I1=rgb2gray(I);subplot(1,2,1);imshow(I1);title('灰度图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系se=strel('disk',1); %生成圆形结构元素I2=imerode(I1,se); %用生成的结构元素对图像进行腐蚀subplot(1,2,2);imshow(I2);title('腐蚀后图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系17.开启和闭合操作用MA TLAB实现开启和闭合操作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; %显示坐标系se=strel('disk',1); %采用半径为1的圆作为结构元素I2=imopen(I1,se); %开启操作I3=imclose(I1,se); %闭合操作subplot(2,2,3),imshow(I2);title('开启运算后图像');axis([50,250,50,200]);axis on; %显示坐标系subplot(2,2,4),imshow(I3);title('闭合运算后图像');axis([50,250,50,200]);axis on; %显示坐标系18.开启和闭合组合操作I=imread('xian.bmp'); %载入图像subplot(3,2,1),imshow(I);title('原始图像');axis([50,250,50,200]);axis on; %显示坐标系I1=rgb2gray(I);subplot(3,2,2),imshow(I1);title('灰度图像');axis([50,250,50,200]);axis on; %显示坐标系se=strel('disk',1);I2=imopen(I1,se); %开启操作I3=imclose(I1,se); %闭合操作subplot(3,2,3),imshow(I2);title('开启运算后图像');axis([50,250,50,200]);axis on; %显示坐标系subplot(3,2,4),imshow(I3);title('闭合运算后图像');axis([50,250,50,200]);axis on; %显示坐标系se=strel('disk',1);I4=imopen(I1,se);I5=imclose(I4,se);subplot(3,2,5),imshow(I5); %开—闭运算图像title('开—闭运算图像');axis([50,250,50,200]);axis on; %显示坐标系I6=imclose(I1,se);I7=imopen(I6,se);subplot(3,2,6),imshow(I7); %闭—开运算图像title('闭—开运算图像');axis([50,250,50,200]);axis on; %显示坐标系19.形态学边界提取利用MATLAB实现如下:I=imread('xian.bmp'); %载入图像subplot(1,3,1),imshow(I);title('原始图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I);subplot(1,3,2),imshow(I1);title('二值化图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I2=bwperim(I1); %获取区域的周长subplot(1,3,3),imshow(I2);title('边界周长的二值图像');axis([50,250,50,200]);grid on;axis on;20.形态学骨架提取利用MATLAB实现如下:I=imread('xian.bmp');subplot(2,2,1),imshow(I);title('原始图像');axis([50,250,50,200]);axis on;I1=im2bw(I);subplot(2,2,2),imshow(I1);title('二值图像');axis([50,250,50,200]);axis on;I2=bwmorph(I1,'skel',1);subplot(2,2,3),imshow(I2);title('1次骨架提取');axis([50,250,50,200]);axis on;I3=bwmorph(I1,'skel',2);subplot(2,2,4),imshow(I3);title('2次骨架提取');axis([50,250,50,200]);axis on;21.直接提取四个顶点坐标I = imread('xian.bmp');I = I(:,:,1);BW=im2bw(I);figureimshow(~BW)[x,y]=getpts。
《数字图像处理及MATLAB实现》图像增强与平滑实验
《数字图像处理及MATLAB实现》图像增强与平滑实验一.实验目的及要求1、熟悉并掌握MA TLAB 图像处理工具箱的使用;2、理解并掌握常用的图像的增强技术。
二、实验设备MATLAB 6.5 以上版本、WIN XP 或WIN2000 计算机三、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
(可将每段程序保存为一个.m文件)1.直方图均衡化clear all; close all % Clear the MATLAB workspace of any variables% and close open figure windows.I = imread('pout.tif'); % Reads the sample images ‘pout.tif’, and stores it inimshow(I) % an array named I.display the imagetext(60,20,'李荣桉1909290239','horiz','center','color','r')figure, imhist(I) % Create a histogram of the image and display it in% a new figure window.[I2,T] = histeq(I); % Histogram equalization.figure, imshow(I2) % Display the new equalized image, I2, in a new figure window.text(60,20,'李荣桉1909290239','horiz','center','color','r')figure, imhist(I2) % Create a histogram of the equalized image I2.figure,plot((0:255)/255,T); % plot the transformation curve.imwrite (I2, 'pout2.png'); % Write the newly adjusted image I2 to a disk file named% ‘pout2.png’.imfinfo('pout2.png') % Check the contents of the newly written file2.直接灰度变换clear all; close allI = imread('cameraman.tif'); 注意:imadjust()功能:调整图像灰度值或颜色映像表,也可实现伽马校正。
(整理)数字图像处理MATLAB指令
其他常用的图像转换函数有:gray2ind函数,将灰度图像转换成索引图像。
Im2bw函数,将其它图像转化为二值图像。
Ind2gray函数,将索引图像转换成灰度图像。
Rgb2gray函数,将彩色图像转换成灰度图像。
1.利用imread( )函数读取一幅图像,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;函数执行语句A = imread('saturn.png');whosName Size Bytes Class AttributesA 1500x1200x3 5400000 uint8imshow(A)4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;imfinfo('saturn.png')5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg 文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
imwrite(A,'xingxing.jpg','quality',25)B = imread('xingxing.jpg');6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。
imwrite(A , 'xingxing.bmp')C = imread('xingxing.bmp');7.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。
F = imread('circbw.tif');im2bw(F)imshow(F)实验二图像直方图与灰度变换下面给出灰度变化的MATLAB程序f=imread('medicine_pic.jpg');g=imhist(f,256); %显示其直方图g1=imadjust(f,[0 1],[1 0]);%灰度转换,实现明暗转换(负片图像) figure,imshow(g1)g2=imadjust(f,[0.5 0.75],[0 1]);%将0.5到0.75的灰度级扩展到范围[0 1] figure,imshow(g2)g=imread('point.jpg');h=log(1+double(g));%对输入图像对数映射变换h=mat2gray(h); %将矩阵h转换为灰度图片h=im2uint8(h); %将灰度图转换为8位图figure,imshow(h)下面给出直方图均衡化增强图像对比度的MATLAB程序:I=imread(‘pollen.jpg); % 读入原图像J=histeq(I); %对原图像进行直方图均衡化处理Imshow(I); %显示原图像Title(‘原图像’); %给原图像加标题名Figure;imshow(J); %显示直方图均衡化后的图像Title(‘直方图均衡化后的图像’) ; %给直方图均衡化后的图像加标题名Figure; subplot(1,2,1) ;%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图的第1幅图Imhist(I,64); %将原图像直方图显示为64级灰度Title(‘原图像直方图’) ; %给原图像直方图加标题名Subplot(1,2,2); %作第2幅子图Imhist(J,64) ; %将均衡化后图像的直方图显示为64级灰度Title(‘均衡变换后的直方图’) ; %给均衡化后图像直方图加标题名1、利用自己编写的灰度直方图计算程序计算rice.tif图像的直方图,并与系统自带的计算程序进行对比。
数字图像处理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); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
数字图像处理及MATLAB实现实验四——图像变换
数字图像处理及MATLAB实现实验四——图像变换1.图像的傅⾥叶变换⼀(平移性质)傅⾥叶变换的平移性质表明了函数与⼀个指数项相乘等于将变换后的空域中⼼移到新的位置,并且平移不改变频谱的幅值。
I=imread('1.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));I=imread('2.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));I=imread('3.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));实验结果符合傅⾥叶变换平移性质2.图像的傅⾥叶变换⼆(旋转性质)%构造原始图像I=zeros(256,256);I(88:168,124:132)=1; %图像范围是256*256,前⼀值是纵向⽐,后⼀值是横向⽐imshow(I)%求原始图像的傅⾥叶频谱J=fft2(I);F=abs(J);J1=fftshift(F);figureimshow(J1,[550])%对原始图像进⾏旋转J=imrotate(I,90,'bilinear','crop');figureimshow(J)%求旋转后图像的傅⾥叶频谱J=fft2(I);F=abs(J);J2=fftshift(F);figureimshow(J2,[550])3.图像的离散余弦变换⼀%对cameraman.tif⽂件计算⼆维DCT变换RGB=imread('cameraman.tif');figure(1)imshow(RGB)I=rgb2gray(RGB);%真彩⾊图像转换成灰度图像J=dct2(I);%计算⼆维DCT变换figure(2)imshow(log(abs(J)),[])%图像⼤部分能量集中在左上⾓处figure(3);J(abs(J)<10)=0;%把变换矩阵中⼩于10的值置换为0,然后⽤idct2重构图像K=idct2(J)/255;imshow(K)4.图像的离散余弦变换⼆% I=imread('1.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% I=imread('2.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% I=imread('3.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% %构造原始图像% I=zeros(256,256);% I(88:168,124:132)=1; %图像范围是256*256,前⼀值是纵向⽐,后⼀值是横向⽐% imshow(I)% %求原始图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J1=fftshift(F);figure% imshow(J1,[550])% %对原始图像进⾏旋转% J=imrotate(I,90,'bilinear','crop');% figure% imshow(J)% %求旋转后图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J2=fftshift(F);figure% imshow(J2,[550])% %对cameraman.tif⽂件计算⼆维DCT变换% RGB=imread('cameraman.tif');% figure(1)% imshow(RGB)% I=rgb2gray(RGB);% %真彩⾊图像转换成灰度图像% J=dct2(I);% %计算⼆维DCT变换% figure(2)% imshow(log(abs(J)),[])% %图像⼤部分能量集中在左上⾓处% figure(3);% J(abs(J)<10)=0;% %把变换矩阵中⼩于10的值置换为0,然后⽤idct2重构图像% K=idct2(J)/255;% imshow(K)RGB=imread('cameraman.tif');I=rgb2gray(RGB);I=im2double(I); %转换图像矩阵为双精度型T=dctmtx(8); %产⽣⼆维DCT变换矩阵%矩阵T及其转置T'是DCT函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000110000001000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*P2',T',T); %重构图像figure,imshow(T);figure,imshow(B2);figure,imshow(I2);RGB=imread('cameraman.tif');I=rgb2gray(RGB);I=im2double(I); %转换图像矩阵为双精度型T=dctmtx(8); %产⽣⼆维DCT变换矩阵%矩阵T及其转置T'是DCT函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000100000000000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*P2',T',T); %重构图像figure,imshow(T);figure,imshow(B2);figure,imshow(I2);5.图像的哈达玛变换cr=0.5;I=imread('cameraman.tif');I=im2double(I)/255; %将读⼊的unit8类型的RGB图像I转换为double类型的数据figure(1),imshow(I);%显⽰%求图像⼤⼩[m_I,n_I]=size(I); %提取矩阵I的⾏列数,m_I为I的⾏数,n_I为I的列数sizi=8;snum=64;%分块处理t=hadamard(sizi) %⽣成8*8的哈达码矩阵hdcoe=blkproc(I,[sizi sizi],'P1*x*P2',t,t');%将图⽚分成8*8像素块进⾏哈达码变换%重新排列系数CE=im2col(hdcoe,[sizi,sizi],'distinct');%将矩阵hdcode分为8*8互不重叠的⼦矩阵,再将每个⼦矩阵作为CE的⼀列[Y Ind]=sort(CE); %对CE进⾏升序排序%舍去⽅差较⼩的系数,保留原系数的⼆分之⼀,即32个系数[m,n]=size(CE);%提取矩阵CE的⾏列数,m为CE的⾏数,n为CE的列数snum=snum-snum*cr;for i=1:nCE(Ind(1:snum),i)=0;end%重建图像re_hdcoe=col2im(CE,[sizi,sizi],[m_I,n_I],'distinct');%将矩阵的列重新组织到块中re_I=blkproc(re_hdcoe,[sizi sizi],'P1*x*P2',t',t);%进⾏反哈达码变换,得到压缩后的图像re_I=double(re_I)/64; %转换为double类型的数据figure(2);imshow(re_I);%计算原始图像和压缩后图像的误差error=I.^2-re_I.^2;MSE=sum(error(:))/prod(size(re_I));。
数字图像处理实验(MATLAB版)
数字图像处理实验(MATLAB版)数字图像处理(MATLAB版)实验指导书(试用版)湖北师范学院教育信息与技术学院2009年4月试行目录实验一、数字图像获取和格式转换 2 实验二、图像亮度变换和空间滤波 6 实验三、频域处理7 实验四、图像复原9 实验五、彩色图像处理101实验六、图像压缩11 实验七、图像分割13 教材与参考文献142《数字图像处理》实验指导书实验一、数字图像获取和格式转换一、实验目的1掌握使用扫描仪、数码相机、数码摄像级机、电脑摄像头等数字化设备以及计算机获取数字图像的方法;2修改图像的存储格式;并比较不同压缩格式图像的数据量的大小。
二、实验原理数字图像获取设备的主要性能指标有x、y方向的分辨率、色彩分辨率(色彩位数)、扫描幅面和接口方式等。
各类设备都标明了它的光学分辨率和最大分辨率。
分辨率的单位是dpi,dpi是英文Dot Per Inch的缩写,意思是每英寸的像素点数。
扫描仪扫描图像的步骤是:首先将欲扫描的原稿正面朝下铺在扫描仪的玻璃板上,原稿可以是文字稿件或者图纸照片;然后启3动扫描仪驱动程序后,安装在扫描仪内部的可移动光源开始扫描原稿。
为了均匀照亮稿件,扫描仪光源为长条形,并沿y方向扫过整个原稿;照射到原稿上的光线经反射后穿过一个很窄的缝隙,形成沿x方向的光带,又经过一组反光镜,由光学透镜聚焦并进入分光镜,经过棱镜和红绿蓝三色滤色镜得到的RGB三条彩色光带分别照到各自的CCD 上,CCD将RGB光带转变为模拟电子信号,此信号又被A/D变换器转变为数字电子信号。
至此,反映原稿图像的光信号转变为计算机能够接受的二进制数字电子信号,最后通过串行或者并行等接口送至计算机。
扫描仪每扫一行就得到原稿x方向一行的图像信息,随着沿y方向的移动,在计算机内部逐步形成原稿的全图。
扫描仪工作原理见图1.1。
4图1.1扫描仪的工作原理在扫描仪的工作过程中,有两个元件起到了关键的作用。
一个是CCD,它将光信号转换成为电信号;另一个是A/D变换器,它将模拟电信号变为数字电信号。
数字图像处理及MATLAB实现4
数字图像处理及MATLAB实现4武汉理工大学信息学院第4章图像变换(ImageTranform)4.1连续傅里叶变换4.2离散傅里叶变换4.3快速傅里叶变换4.4傅里叶变换的性质4.5图像傅里叶变换实例4.6其他离散变换一、图象变换的引入1.方法:对图象信息进行变换,使能量保持但重新分配。
2.目的:有利于加工、处理[滤除不必要信息(如噪声),加强/提取感兴趣的部分或特征]。
二、方法分类可分离、正交变换:2D-DFT,2D-DCT,2D-DHT,2D-DWT三、用途1.提取图象特征(如):(1)直流分量:f(某,y)的平均值=F(0,0);(2)目标物边缘:F(u,v)高频分量。
2.图像压缩:正交变换能量集中,对集中(小)部分进行编码。
3.图象增强:低通滤波,平滑噪声;高通滤波,锐化边缘。
4.1连续傅里叶变换(ContinuouFourierTranform)1、一维傅立叶变换及其反变换::1F(u)f(某)ej2u某d某f(某)F(u)ej2u某du4.1.1连续傅里叶变换的定义(DefinitionofContinuouFourierTranform)这里f某是实函数,它的傅里叶变换Fu通F常是复函数。
u的实部、虚部、振幅、能量和相位分别表示如下:实部Ruftco2utdt(4.3)虚部Iuftin2utdt(4.4)振幅1FuR2uI2u2(4.5)4.1.1连续傅里叶变换的定义(DefinitionofContinuouFourierTranform)能量相位EuFuR2uI2u2(4.6)(4.7)傅里叶变换可以很容易推广到二维的情形。
设函数f某,y是连续可积的,且fu,v可积,则存在如下的傅里叶变换对:IuuarctanRu4.1连续傅里叶变换的定义(DefinitionofContinuouFourierTranform)Ff(某,y)F(u,v)f(某,y)ej2u某vyd某dy(4.8)F1F(u,v)f(某,y)F(u,v)ej2u某vydudv(4.9)式中u、v是频率变量。
数字图像处理(MATLAB版)(第2版)
目录分析
1.1数字图像处理的 发展
1.2数字图像的相关 概念
1.3数字图像处理的 内容
1.4数字图像处理的 方法
1
1.5图像数字 化技术
2
1.6图像的统 计特征
3
1.7数字图像 的应用
4
1.8 MATLAB 领略
5 1.9 MATLAB
图像处理应用 实例
小结
习题
1
2.1图像类型 的转换
2
2.2线性系统
数字图像处理(MATLAB版)(第2版)
读书笔记模板
01 思维导图
03 目录分析 05 读书笔记
目录
02 内容摘要 04 作者介绍 06 精彩摘录
思维导图
本书关键字分析思维导图
几何变换
技术
图像
基础
图像
特征
数字图像处理
版
数字图像
内容 小结
数字图像
第版
习题
边界
第章
图像增强
滤波
运算
内容摘要
本书主要内容包括:全书共10章,分别介绍了数字图像的相关论述、数字图像的处理基础、图像编码、图像 复原、图像几何变换、图像频域变换、图像几何变换、小波变换、图像增强、图像分割与边缘检测及图像特征描 述等内容。
10.8形态学重建 10.9特征度量
小结 10.10查表操作
习题
作者介绍
这是《数字图像处理(MATLAB版)(第2版)》的读书笔记模板,暂无该书作者的介绍。
读书笔记
这是《数字图像处理(MATLAB版)(第2版)》的读书笔记模板,可以替换为自己的心得。
精彩摘录
这是《数字图像处理(MATLAB版)(第2版)》的读书笔记模板,可以替换为自己的精彩内容摘录。
数字图像处理在matlab中的基本操作
数字图像处理在matlab中的应用1.图像的缩放图像的缩放是图像的空间域变换操作,可以认为是在输入图像和输出图像之间进行像素-像素变换。
图像插值操作是图像缩放的基本方法,基本原理是,估计像素点之间位置的像素值,将输入图像和输出图像的变换在数字图像的约束下得以完善,有效的填充图像可能出现的空白点。
图像的插值包括三种方法:1.最近邻插值,该算法中,输出图像中每一个像素点的值就是与该点在输入图像中变换位置最临近采样点的值。
2.双线性插值,该方法的输出像素值是它在输入图像中2*2邻域采样点的平均值。
3.双三次插值,相比于双线性插值,其插值邻域大小为4*4,插值效果好,但相应计算量也较大。
Matlab图像处理工具箱中的函数imresize可以对图像进行缩放操作,同时指定以上所介绍的插值方法作为其函数。
以下基于matlab实现图像“hd1.bmp”的不同方式的缩放(这里设置放大倍数为2倍)%图像缩放操作代码:>> J=imread('hd1.bmp'); %图像的读入>> x1=imresize(J,2); %将图像以最近邻插值放大两倍>> x2=imresize(J,2,'bilinear'); %将图像以双线性插值放大两倍>> x3=imresize(J,2,'bicubic'); %将图像以双三次插值放大两倍>> figure,imshow(J) %图像输出显示>> figure,imshow(x1)>> figure,imshow(x2)>>figure,imshow(x3)输入输出图像对比图1-1 原图输出图1-2 最近邻插值放大2倍输出图1-3 双线性插值放大2倍输出图1-4双三次插值放大2倍输出2. 图像的点处理-灰度变换/直方图调整点处理是通过像元亮度值(灰度值)的变换来实现的。
数字图像处理教程(matlab版)
FILENAME参数指定文件名。FMT为保存文件采用的格式。 imwrite(I6,'nirdilatedisk2TTC10373.bmp');
/1、图像的读取和显示
三、图像的显示
imshow(I,[low high])
I为要显示的图像矩阵。[low high]为指定显示灰度图像的灰度范围。 高于high的像素被显示成白色;低于low的像素被显示成黑色;介于 High和low之间的像素被按比例拉伸后显示为各种等级的灰色。 figure;imshow(I6);title('The Main Pass Part of TTC10373');
t c logk s
c为尺度比例常数,s为源灰度值,t为变换后的目标灰 度值。k为常数。灰度的对数变换可以增强一幅图像 中较暗部分的细节,可用来扩展被压缩的高值图像中 的较暗像素。广泛应用于频谱图像的显示中。
Warning:log函数会对输入图像矩阵s中的每个元素进行
操作,但仅能处理double类型的矩阵。而从图像文件中得到的 图像矩阵大多是uint8类型的,故需先进行im2double数据类型 转换。
原 图 像
滤 波 后 图
像
/4、空间域图像增强 三、滤波器设计
h=fspecial(type,parameters)
parameters为可选项,是和所选定的滤波器类型type相关的 配置参数,如尺寸和标准差等。
type为滤波器的类型。其合法值如下:
合法取值 ‘average’
‘disk’ ‘gaussian’ ‘laplacian’
DA
DMax A0
DA
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主程序clear allclose allclc!echo 本次图像处理的菜单如下:!!echo 1,imgsharping!!echo 2,imgnegative!!echo 3,imgsmoothing!!echo 4,imgsubtracting!!echo 5,medianfilting!!echo 6,contraststrength!!echo 7,lineartransform!!echo 8,imgfilp!!echo 9,imgindextransform!iptsetpref('ImshowBorder', 'tight')a=1;img = imread('C:\Users\huanhuan\Desktop\司马.jpg');figure(1), imshow(img);while(a==1)choose=input('please enter your choosing ranging from 1 to 9: '); switch choosecase 1,imgsharping(img);case 2,imgnegative(img);case 3,imgsmoothing(img);case 4,imgsubstract(img);case 5,medianfilting(img);case 6,contraststrength();case 7,lineartransform();case 8,imgfilp(img);case 9,imgindextransform();otherwisedisp('Unknown method.');enda=input('continue(1) or quit(2)');end函数1.Imgsharpingfunction imgsharping(img)h = [0 -1 0; -1 5 -1; 0 -1 0]; % Laplacian filterimgHSV = rgb2hsv(img);v = imgHSV(:,:,3);v = imfilter(v,h);imgHSV(:,:,3) = v;img3 = hsv2rgb(imgHSV);figure; imshow(img3);2.Imgnegativefunction imgnegative(img)figureimg2 = imcomplement(img);imshow(img2);title('negative image');zoom on3,imgsmoothingfunction imgsmoothing(img)img2 = uint8(zeros(size(img)));img2(:,:,1) = imfilter(img(:,:,1), fspecial('average',5)); img2(:,:,2) = imfilter(img(:,:,2), fspecial('average',5)); img2(:,:,3) = imfilter(img(:,:,3), fspecial('average',5)); figure; imshow(img2);4,imgsubtractingfunction imgsubstract(img)level = graythresh(img);BW= im2bw(img,level);figure(2), imshow(BW)5,medianfiltingfunction medianfilting(I)J = imnoise(I,'salt & pepper',0.02);imshow(I)figure, imshow(J)K = filter2(fspecial('average',3),J)/255;L = medfilt2(J,[3 3]);figure, imshow(K)figure, imshow(L)6,contraststrengthfunction contraststrength()clear;zx=imread('C:\Users\huanhuan\Desktop\huan.jpg'); imshow(zx);a=double(zx);for i=1:256for j=1:256b(i,j)=4*a(i,j);if (b(i,j)>=255)b(i,j)=255;endendendb=uint8(b);figure(2);imshow(b);7,lineartransformfunction lineartransform()iptsetpref('ImshowBorder', 'tight')img = imread('C:\Users\huanhuan\Desktop\huan.jpg'); figure; imshow(img);[r,c,p]=size(img);img=double(img);img=img/256;for a=1:pfor b=1:rfor d=1:cif(img(b,d,a)<0.2)img(b,d,a)=4*img(b,d,a);endif(img(b,d,a)>0.2)if(img(b,d,a)<1)img(b,d,a)=0.25*img(b,d,a)+0.75;endendendendendfigure;imshow(img);8,imgfilpfunction imgfilp(img)[r,c,p]=size(img);img1=zeros(size(img));for a=1:pfor b=1:rfor d=1:cimg1(b,d,a)=100-1-img(b,d,a);endendendfigure;imshow(img1);9,imgindextransformfunction imgindextransform()iptsetpref('ImshowBorder', 'tight')img = imread('C:\Users\huanhuan\Desktop\sl.jpg'); img=rgb2gray(img);figure;imshow(img);[h,c]=size(img);img=double(img);for i=1:hfor j=1:cimg1(i,j)=0.01*power(img(i,j),0.9);img2(i,j)=0.01*power(img(i,j),1.2);endendfigure;imshow(img1);figure;imshow(img2);10,zhifangtufunction zhifangtu()I = imread('C:\Users\huanhuan\Desktop\lena256.bmp'); subplot(3,2,1);imshow(I);title('原图');subplot(3,2,2);imhist(I);title('原图直方图');[m,n] = size(I);hf = zeros(1,256);pa = zeros(1,256);for i = 1:mfor j = 1:nhf(I(i,j))=hf(I(i,j))+1;%统计各灰度像素个数endendpa(1)= 0;for k = 2:256pf(k) =hf(k)/(m*n);%算灰度分布概率pa(k) =pa(k-1)+pf(k);%灰度累计分布概率endG = zeros(size(I));for i = 1:mfor j = 1:nG(i,j)=255*pa(I(i,j)); %将原来f的灰度值映射到新的灰度值g(i,j) = 255*pa(f(i,j))endendH = mat2gray(G);K = uint8(G);subplot(3,2,3);imshow(K);title('用课本方法得到的均衡图');subplot(3,2,4);imhist(K);title('用课本方法的直方图');subplot(3,2,5);imshow(histeq(I));title('用histep函数得到的均衡图'); subplot(3,2,6);imhist(histeq(I));title('用histep函数得到的直方图');11,facedetectclear all;close all;iptsetpref('ImshowBorder', 'tight')img = imread('C:\Users\huanhuan\Desktop\宇多田光.bmp');figure; imshow(img);R = img(:,:,1);G = img(:,:,2);B = img(:,:,3);faceRgn1 = (R>95) & (G>40) & (B>20) & max(img, [], 3)-min(img, [], 3)>15 & abs(R-G)>15 & R>B;figure; imshow(faceRgn1);程序结果图Imgsharping锐化Imgnegative取反Imgsmoothing图像平均Imgsubtracting边缘提取MedianfiltingContraststrength对比度增强Lineartransform(分段线性)Imgfilp图像翻转Imgindextransform指数变换原图用对数处理后Facedetect 原图识别后。