视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数字图像处理MATLAB程序
2025-10-02 04:31:57 责编:小OO
文档
第一部分

数字图像处理

实验一 图像的点运算

实验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)均衡化后图像

         

(c)原始图像直方图                        (d)均衡化后图像直方图

六.实验报告要求

1、给出实验原理过程及实现代码;

2、输入一幅灰度图像,给出其灰度均衡结果,并进行灰度均衡化前后图像直方图分布对比分析。

实验二 图像滤波

实验2.1 3*3均值滤波

一.实验目的

1.熟悉matlab图像处理工具箱及均值滤波函数的使用;

2.理解和掌握3*3均值滤波的方法和应用;

二.实验设备

1.PC机一台;

2.软件matlab;

三.程序设计 

在matlab环境中,程序首先读取图像,然后调用图像增强(均值滤波)函数,设置相关参数,再输出处理后的图像。

I = imread('cameraman.tif');

figure,imshow(I);

J=filter2(fspecial(‘average’,3),I)/255;

figure,imshow(J);

四.实验步骤

1. 启动matlab

双击桌面matlab图标启动matlab环境;

2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像增强(均值滤波)函数,设置参数;最后输出处理后的图像;

3.浏览源程序并理解含义;

4.运行,观察显示结果;

5.结束运行,退出;

五.实验结果

观察matlab环境下原始图像经3*3均值滤波处理后的结果。

                

(a)原始图像                           (b)3*3均值滤波处理后的图像

图(3)

六.实验报告要求

输入一幅灰度图像,给出其图像经3*3均值滤波处理后的结果,然后对每一点的灰度值和它周围24个点,一共25个点的灰度值进行均值滤波,看看对25个点取均值与对9个点取中值进行均值滤波有什么区别?有没有其他的算法可以改进滤波效果。

实验2.2  3*3中值滤波

一.实验目的

1.熟悉matlab图像处理工具箱及中值滤波函数的使用;

2.理解和掌握中值滤波的方法和应用;

二.实验设备

1.PC机一台;

2.软件matlab;

三.程序设计

在matlab环境中,程序首先读取图像,然后调用图像增强(中值滤波)函数,设置相关参数,再输出处理后的图像。

I = imread('cameraman.tif');

figure,imshow(I);

J=medfilt2(I,[5,5]);

figure,imshow(J);

四.实验步骤

1. 启动matlab

双击桌面matlab图标启动matlab环境;

2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像增强(中值滤波)函数,设置参数;最后输出处理后的图像;

3.浏览源程序并理解含义;

4.运行,观察显示结果;

5.结束运行,退出;

五.实验结果

观察matlab环境下原始图像经3*3中值滤波处理后的结果。

             

(a)原始图像                         (b)3*3中值滤波处理后的图像

图(4)

六.实验报告要求

输入一幅灰度图像,给出其图像经3*3中值滤波处理后的结果,然后对每一点的灰度值和它周围24个点,一共25个点的灰度值进行排序后取中值,然后该点的灰度值取中值。看看对25个点取中值与对9个点取中值进行中值滤波有什么区别?

实验三 图像几何变换

实验3.1 图像的缩放

一.实验目的

1.熟悉matlab图像处理工具箱及图像缩放函数的使用;

2.掌握图像缩放的方法和应用;

二.实验设备

1.PC机一台;

2.软件matlab;

三.程序设计

在matlab环境中,程序首先读取图像,然后调用图像缩放函数,设置相关参数,再输出处理后的图像。

I = imread('cameraman.tif');

figure,imshow(I);

scale = 0.5;

J = imresize(I,scale);

figure,imshow(J);

四.实验步骤

1. 启动matlab

双击桌面matlab图标启动matlab环境;

2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像缩放函数,设置参数;最后输出处理后的图像;

3.浏览源程序并理解含义;

4.运行,观察显示结果;

5.结束运行,退出;

五.实验结果

观察matlab环境下图像缩放后的结果。

             

(a)原始图像                            (b)缩放后的图像

图(5)

六.实验报告要求

    输入一幅灰度图像,给出其图像缩放后的结果,然后改变缩放比率,观察图像缩放后结果柄进行分析。

实验3.2 图像旋转

一.实验目的

1.熟悉matlab图像处理工具箱及图像旋转函数的使用;

2.理解和掌握图像旋转的方法和应用;

二.实验设备

1.PC机一台;

2.软件matlab;

三.程序设计

在matlab环境中,程序首先读取图像,然后调用图像旋转函数,设置相关参数,再输出处理后的图像。

I = imread('cameraman.tif');

figure,imshow(I);

theta = 30;

K = imrotate(I,theta); % Try varying the angle, theta.

figure, imshow(K)

四.实验步骤

1. 启动matlab

双击桌面matlab图标启动matlab环境;

2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的图像旋转函数,设置参数;最后输出处理后的图像;

3.浏览源程序并理解含义;

4.运行,观察显示结果;

5.结束运行,退出;

五.实验结果

观察matlab环境下图像旋转后的结果。

                 

(a)原始图像                                      (b)旋转后的图像

图(7)

六.实验报告要求

输入一幅灰度图像,给出其图像旋转后的结果,然后改变旋转角度,观察图像旋转后结果柄进行分析。

实验四 图像边缘检测

实验4.1 边缘检测(Sobel、Prewitt、Log边缘算子)

一.实验目的

1.熟悉matlab图像处理工具箱及图像边缘检测函数的使用;

2.理解和掌握图像边缘检测(Sobel、Prewitt、Log边缘算子)的方法和应用;

二.实验设备

1.PC机一台;

2.软件matlab;

三.程序设计

在matlab环境中,程序首先读取图像,然后调用图像边缘检测(Sobel、Prewitt、Log边缘算子)函数,设置相关参数,再输出处理后的图像。

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

双击桌面matlab图标启动matlab环境;

2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的边缘检测(Sobel边缘算子、Prewitt边缘算子、Log边缘算子)函数,设置参数;最后输出处理后的图像;

3.浏览源程序并理解含义;

4.运行,观察显示结果;

5.结束运行,退出;

五.实验结果

观察经过图像边缘检测(Sobel、Prewitt、Log边缘算子)处理后的结果。

             

(a)原始图像                              (b)Sobel边缘算子

            

(c)Prewitt边缘算子                        (d)Log边缘算子

图(7)

六.实验报告要求

输入一幅灰度图像,给出其图像边缘检测(Sobel、Prewitt、Log边缘算子)后的结果并进行分析对比。

实验五 基于DSP的边缘检测

实验5.1 边缘检测(Sobel边缘算子)

一.实验目的 

1.熟悉视频显示程序的运行过程、控制过程,搞清数据处理、传输途径;

2.结合实例学习如何在视频显示程序中增加图像处理算法;

3. 熟悉CCS集成开发环境的使用;

4.了解边缘检测的算法和用途,学习利用Sobel算子进行边缘检测的程序设计方法;

二.实验设备

1.SEED_DTK 教学实验系统一套;

2.DSP 仿真器;

3.PC机一台。

三.程序设计

在视频显示任务的循环中,程序首先将视频数据从输入缓冲区读入自己开设的临时图像处理缓冲区,再在临时图像处理缓冲区上进行处理,处理后的数据再输出到输出缓冲区。

在屏幕开辟一个矩形区域,对这个区域内的图像进行处理。这里按模板(1)进行处理。

DSP程序具体详见附录一。

/*画矩形边框*/

void drawRectangle();

/*Sobel边缘检测处理*/

void sobelEdge();

四.实验步骤

1.实验准备

(1) 连接设备

参见“第一部分 实验环境的建立”的“一 硬件连接”部分。

(2) 开启设备

 ①打开计算机电源(注意:连接设备时并不需要关闭计算机,但要关闭实验箱电源;如在连接设备前已经打开计算机,就不需要进行此步骤了)。

 ②打开实验箱电源开关

 ③打开显示器开关。

(3) 设置Code Composer Studio 为Emulator 方式

参见“第一部分 实验环境的建立”的“二 软件的安装和配置”部分。如先前已经设置过,就不需再进行设置了。

(4) 双击usb20emurst.exe,如果出现提示“SEED USB2.0 XDS510 CARD IS RESET,HARDWARE VERSION 1”,证明仿真器与目标系统连接正常。否则请检查电源是否打开,仿真器驱动是否安装正确以及硬件。

(5) 启动Code Composer Studio

双击桌面上“CCS 2(‘C6000)”图标,启动Code Composer Studio。成功后可看到CCS环境界面。

2.打开工程:工程目录

DM2Programs\\2.ImageProcess\\SEED401_SobelEdge\\SobelEdgeloop2.pjt

3.浏览工程中源程序并理解含义。

4.编译、连接、下载程序并运行,观察显示。

5.结束运行,退出工程。

五.实验结果

矩形框内外分别是用Sobel边缘算子处理和未处理的图像结果。

六.实验报告要求

(1)简述DSP下实验步骤;

(2)输入视频,观察Sobel边缘检测效果并经行分析;

实验5.2 边缘检测(Prewitt边缘算子)

一.实验目的

1.熟悉视频显示程序的运行过程、控制过程,搞清数据处理、传输途径;

2.结合实例学习如何在视频显示程序中增加图像处理算法;

3. 熟悉CCS集成开发环境的使用;

4.了解边缘检测的算法和用途,学习利用Prewitt算子进行边缘检测的程序设计方法;

二.实验设备

1.SEED_DTK 教学实验系统一套;

2.DSP 仿真器;

3.PC机一台。

三.程序设计

在视频显示任务的循环中,程序首先将视频数据从输入缓冲区读入自己开设的临时图像处理缓冲区,再在临时图像处理缓冲区上进行处理,处理后的数据再输出到输出缓冲区。

在屏幕开辟一个矩形区域,对这个区域内的图像进行处理。这里按模板(2)进行处理。

DSP程序具体详见附录。

/*画矩形边框*/

void drawRectangle();

/*Prewitt边缘检测处理*/

void PrewittEdge();

四.实验步骤

1.实验准备

(1) 连接设备

参见“第一部分 实验环境的建立”的“一 硬件连接”部分。

(2) 开启设备

 ①打开计算机电源(注意:连接设备时并不需要关闭计算机,但要关闭实验箱电源;如在连接设备前已经打开计算机,就不需要进行此步骤了)。

 ②打开实验箱电源开关

 ③打开显示器开关。

(3) 设置Code Composer Studio 为Emulator 方式

参见“第一部分 实验环境的建立”的“二 软件的安装和配置”部分。如先前已经设置过,就不需再进行设置了。

(4) 双击usb20emurst.exe,如果出现提示“SEED USB2.0 XDS510 CARD IS RESET,HARDWARE VERSION 1”,证明仿真器与目标系统连接正常。否则请检查电源是否打开,仿真器驱动是否安装正确以及硬件。

(5) 启动Code Composer Studio

双击桌面上“CCS 2(‘C6000)”图标,启动Code Composer Studio。成功后可看到CCS环境界面。

2.打开工程:工程目录

DM2Programs\\2.ImageProcess\\ SEED402_PrewittEdge\\PrewittEdgeloop2.pjt

3.浏览工程中源程序并理解含义。

4.编译、连接、下载程序并运行,观察显示。

5.结束运行,退出工程。

五.实验结果

矩形框内外分别是用Prewitt边缘算子处理和未处理的图像结果。

六.实验报告要求

(1)简述DSP环境下实验步骤;

(2)输入视频,观察Prewitt边缘检测效果并进行分析。

实验5.3 边缘检测(Laplacian边缘算子)

一.实验目的

1.熟悉视频显示程序的运行过程、控制过程,搞清数据处理、传输途径;

2.结合实例学习如何在视频显示程序中增加图像处理算法;

3. 熟悉CCS集成开发环境的使用;

4.了解边缘检测的算法和用途,学习利用Laplacian算子进行边缘检测的程序设计方法;

二.实验设备

1.SEED_DTK 教学实验系统一套;

2.DSP 仿真器;

3.PC机一台。

三.程序设计

在视频显示任务的循环中,程序首先将视频数据从输入缓冲区读入自己开设的临时图像处理缓冲区,再在临时图像处理缓冲区上进行处理,处理后的数据再输出到输出缓冲区。

在屏幕开辟一个矩形区域,对这个区域内的图像进行处理。这里按模板(3)进行处理。

DSP程序具体详见附录三。

/*画矩形边框*/

void drawRectangle();

/*Laplacian边缘检测处理*/

void LaplacianEdge ();

四.实验步骤

1.实验准备

(1) 连接设备

参见“第一部分 实验环境的建立”的“一 硬件连接”部分。

(2) 开启设备

 ①打开计算机电源(注意:连接设备时并不需要关闭计算机,但要关闭实验箱电源;如在连接设备前已经打开计算机,就不需要进行此步骤了)。

 ②打开实验箱电源开关

 ③打开显示器开关。

(3) 设置Code Composer Studio 为Emulator 方式

参见“第一部分 实验环境的建立”的“二 软件的安装和配置”部分。如先前已经设置过,就不需再进行设置了。

(4) 双击usb20emurst.exe,如果出现提示“SEED USB2.0 XDS510 CARD IS RESET,HARDWARE VERSION 1”,证明仿真器与目标系统连接正常。否则请检查电源是否打开,仿真器驱动是否安装正确以及硬件。

(5) 启动Code Composer Studio

双击桌面上“CCS 2(‘C6000)”图标,启动Code Composer Studio。成功后可看到CCS环境界面。

2.打开工程:工程目录

DM2Programs\\2.ImageProcess\\SEED403_ LaplacianEdge\\LaplacianEdgeloop2.pjt

3.浏览工程中源程序并理解含义。

4.编译、连接、下载程序并运行,观察显示。

5.结束运行,退出工程。

五.实验结果

矩形框内外分别是用Laplacian边缘算子处理和未处理的图像结果。

六.实验报告要求

(1)简述DSP环境下实验步骤;

(2)输入视频,观察Laplacian边缘检测效果并进行分析。

急求:加入高斯白噪声(μ=0,σ^2=0.01)检测结果

1 原始图像

2 Sobel算子边缘检测

3 Prewitt算子边缘检测

4 Roberts算子边缘检测

5 Canny算子边缘检测

我把程序贴下面了,这个是Robert算子的程序。换做其他算子,你只要该其中的一个矩阵就行了。查到这几个算子,然后替换,我在程序中会标出的。

clc

close all

clear all

%%%生成高斯平滑滤波模板%%%

%%%%%%%%%%%%%%%%%%%%%%%%%

hg=zeros(3,3);  %设定高斯平滑滤波模板的大小为3*3

delta=0.5;

for x=1:1:3

    for y=1:1:3

        u=x-2;

        v=y-2;

        hg(x,y)=exp(-(u^2+v^2)/(2*pi*delta^2));

    end

end

h=hg/sum(hg(:));

%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%读入图像%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%

f = imread('1111.tif'); % 读入图像文件

f=rgb2gray(im2double(f));

imshow(f)

title('原始图像');

[m,n]=size(f);

ftemp=zeros(m,n);

rowhigh=m-1;

colhigh=n-1;

%%%高斯滤波%%%

for x=2:1:rowhigh-1

    for y=2:1:colhigh-1

        mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-1) f(x+1,y) f(x+1,y+1)];

        A=h.*mod;

        ftemp(x,y)=sum(A(:));

    end

end

f=ftemp

figure,imshow(f)

title('通过高斯滤波器后的图像');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% %%%利用roberts算子进行边缘检测%%%

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

sx=[-1 -2 -1;0 0 0;1 2 1];

sy=[-1 0 1;-2 0 2;-1 0 1];%%%%%你可以替换成其他算子,这里是罗伯特算子

% sx=[-1 -2 -1;0 0 0;1 2 1];

% sy=[-1 0 1;-2 0 2;-1 0 1];这个是Sobel算子,类似的,你可以替换成canny算子等等

for x=2:1:rowhigh-1

    for y=2:1:colhigh-1

        mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-1) f(x+1,y) f(x+1,y+1)];

        fsx=sx.*mod;

        fsy=sy.*mod;

        ftemp(x,y)=sqrt((sum(fsx(:)))^2+(sum(fsy(:)))^2);

    end

end

fr=im2uint8(ftemp);

figure,imshow(fr)

title('用roberts算子边缘检测的原始图像');

%%%域值分割%%%

TH1=60;  %设定阈值

for x=2:1:rowhigh-1

    for y=2:1:colhigh-1

if (fr(x,y)>=TH1)&((fr(x,y-1) <= fr(x,y)) & (fr(x,y) > fr(x,y+1)) )

          fr(x,y)=200;

elseif(fr(x,y)>=TH1)&( (fr(x-1,y) <=fr(x,y)) & (fr(x,y) >fr(x+1,y)))

          fr(x,y)=200;

      else fr(x,y)=50;

        end

    end

end

figure,imshow(fr)

title('用roberts算子边缘检测并细化后的图像');下载本文

显示全文
专题