数字图像处理实验作业及代码
matlab 数字图像处理实验报告(五份)

《数字图像处理实验报告》实验一图像的增强一.实验目的1.熟悉图像在MATLAB下的读写、输出;2.熟悉直方图;3.熟悉图像的线性指数等;4.熟悉图像的算术运算和几何变换。
二.实验仪器计算机、MATLAB软件三.实验原理图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。
从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。
其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。
此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。
频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。
常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。
假定原图像为f(x,y),经傅立叶变换为F(u,v)。
频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。
四.实验内容及步骤1.图像在MATLAB下的读写、输出;实验过程:>> I = imread('F:\image\624baf9dbcc4910a.jpg');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'IMG_20170929_130307.jpg', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 196Original Image2.给定函数的累积直方图。
数字图像处理实验报告 (图像编码)

实验三图像编码一、实验内容:用Matlab语言、C语言或C++语言编制图像处理软件,对某幅图像进行时域和频域的编码压缩。
二、实验目的和意义:1. 掌握哈夫曼编码、香农-范诺编码、行程编码2.了解图像压缩国际标准三、实验原理与主要框架:3.1实验所用编程环境:Visual C++6.0(简称VC)3.2实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:(如图3.1)图3.1 位图的文件结构具体组成图:单色DIB 有2个表项16色DIB 有16个表项或更少 256色DIB 有256个表项或更少 真彩色DIB 没有调色板每个表项长度为4字节(32位) 像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍biSize biWidth biHeight biPlanes biBitCount biCompression biSizeImagebiXPelsPerMeter biYPelsPerMeter biClrUsedbiClrImportantbfType=”BM ” bfSizebfReserved1 bfReserved2 bfOffBits BITMAPFILEHEADER位图文件头 (只用于BMP 文件)BITMAPINFOHEADER位图信息头Palette 调色板DIB Pixels DIB 图像数据3.3 数字图像基本概念数字图像是连续图像(,)f x y 的一种近似表示,通常用由采样点的值所组成的矩阵来表示:(0,0)(0,1)...(0,1)(1,0)(1,1)...(1,1).........(1,0)(1,1)...(1,1)f f f M f f f M f N f N f N M -⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥----⎣⎦每一个采样单元叫做一个像素(pixel ),上式(2.1)中,M 、N 分别为数字图像在横(行)、纵(列)方向上的像素总数。
数字图像处理大作业报告

数字图像处理实验报告实验选题:选题二组员:学号:班级:指导老师:实验日期:2019年5月22日一、实验目的及原理1.识别出芯片的引脚2.熟悉并掌握opencv的某些函数的功能和使用方法原理:通过滤波、形态学操作得到二值图,再在二值图中设置条件识别引脚部分。
二、实现方案对图片滤波、调节阈值做边缘检测过滤掉一部分图片中干扰元素;然后通过膨胀、腐蚀操作来减少引脚的空心部分;再通过findContours()函数找到引脚的边缘并得到轮廓的点集,设置特定的长宽比和矩形面积识别引脚部分。
三、实验结果四、源码#include<iostream>#include<cmath>#include"opencv2/highgui/highgui.hpp"#include"opencv2/imgproc/imgproc.hpp"using namespace std;using namespace cv;int main(int argv, char **argc){//载入图片Mat srtImag = imread("2.jpg");Mat G_blur = srtImag.clone();//降噪blur(G_blur, G_blur, Size(5, 5));//imshow("降噪", G_blur);//Canny边缘检测Mat Canny_Imag = G_blur;Canny_Imag = Canny_Imag > 176;Canny(G_blur, Canny_Imag, 300, 50, 3);//imshow("边缘检测", Canny_Imag);//膨胀Mat element = getStructuringElement(MORPH_RECT, Size(10, 10));dilate(Canny_Imag, Canny_Imag, element);//imshow("膨胀", Canny_Imag);//腐蚀Mat element_1 = getStructuringElement(MORPH_RECT, Size(11, 11));erode(Canny_Imag, Canny_Imag, element_1);//imshow("腐蚀", Canny_Imag);//查找轮廓vector<vector<Point>>contours;vector<Vec4i>hierarchy;findContours(Canny_Imag, contours, hierarchy, RETR_CCOMP, CHAIN_APPROX_SIMPLE);vector<vector<Point>> contour_s(contours.size());//该数组共有contours.size()个轮廓的点集vector<Rect> Rec_s(contours.size());//逼近多边形的点集数组//获得每个轮廓点集的逼近多边形的点集for (size_t i = 0; i < contours.size(); i++) {approxPolyDP(Mat(contours[i]), contour_s[i], 3,false);//contour_s存储逼近多边形的点集Rec_s[i]= boundingRect(contour_s[i]); //Rec_s存储最小包围矩形的点集}//筛选合适长宽比的矩形并将其画出来Mat result_Imag = srtImag.clone();for (size_t j = 0; j < contours.size(); j++) {double as_ra;//长宽比as_ra = Rec_s[j].height / Rec_s[j].width;if (as_ra > 3.3 && as_ra < 9.3 && Rec_s[j].area() > 20) { rectangle(result_Imag, Rec_s[j], Scalar(0, 255, 255), 2, 7);}}imshow("result", result_Imag);waitKey(0);return 0;}五、总结经过这次实验,我熟悉了对blur()、Canny()、dilate()、erode()、findContours()、approxPolyDP()等函数的使用,了解了Rect类的构成等。
数字图像处理实验代码

i = imread('C:\Documents and Settings\1\桌面\12.jpg')i = rgb2gray(i);>> figure(i)>> figure(2)>> subplot(2,2,1)>> imshow(i)>> title('原始灰度图像')>> j = ffshift(ff2(i));>> j = fftshift(fft2(i));>> jj = log(abs(j));>> subplot(2,2,2);>> imshow(jj,[ ]);title('原图像幅度谱')>> phase = (angle(j)*180/pi);>> subplot(2,2,3)>> imshow(phase)>> title('原图像相位谱')I = imread('C:\Documents and Settings\1\桌面\12.jpg');>> I=rgb2gray(I); % 将图像转为灰度图像figure(1), subplot(2,2,1);imshow(I); %显示灰度图片title('原始灰度图像');J=fftshift(fft2(I)); %傅立叶变换,并移频JJ=log(abs(J)); %取得幅度谱,其值较大,故取logsubplot(2,2,2);imshow(JJ,[ ]); %显示幅度谱,[ ]内参数可修改title('原图像幅度谱');[a,b]=size(J); %取出频谱尺度h=zeros(a,b);a0=round(a/2); %频谱的横向宽度,取整b0=round(b/2); %频谱的纵向宽度,取整d=30; %改变d 值,所的图像不同for i=1:afor j=1:bdistance=sqrt((i-a0)^2+(j-b0)^2);if distance<=dh(i,j)=1;elseh(i,j)=0; %构造出大小和频谱一致的滤波器hendendendJ1=h.*J; %滤波后频谱J1J2= log(abs(J1));subplot(2,2,3);imshow(J2,[ ])title('低通滤波后幅度谱');J3=ifft2(ifftshift(J1)); %逆傅立叶变换J4=uint8(abs(J3)); %将滤波图像转换成uint8 格式subplot(2,2,4); imshow(J4);title('低通滤波后图像')>>I = imread('C:\Documents and Settings\1\桌面\12.jpg');>> I=rgb2gray(I); % 将图像转为灰度图像figure(1), subplot(2,2,1);imshow(I); %显示灰度图片title('原始灰度图像');J=fftshift(fft2(I)); %傅立叶变换,并移频JJ=log(abs(J)); %取得幅度谱,其值较大,故取logsubplot(2,2,2);imshow(JJ,[ ]); %显示幅度谱,[ ]内参数可修改title('原图像幅度谱');[a,b]=size(J); %取出频谱尺度h=zeros(a,b);a0=round(a/2); %频谱的横向宽度,取整b0=round(b/2); %频谱的纵向宽度,取整d=50; %改变d 值,所的图像不同for i=1:afor j=1:bdistance=sqrt((i-a0)^2+(j-b0)^2);if distance>=dh(i,j)=1;elseh(i,j)=0; %构造出大小和频谱一致的滤波器hendendendJ1=h.*J; %滤波后频谱J1J2= log(abs(J1));subplot(2,2,3);imshow(J2,[ ])title('高通滤波后幅度谱');J3=ifft2(ifftshift(J1)); %逆傅立叶变换J4=uint8(abs(J3)); %将滤波图像转换成uint8 格式subplot(2,2,4); imshow(J4);title('高通滤波后图像')>>I = imread('C:\Documents and Settings\1\桌面\12.jpg');I = rgb2gray(I);I1=im2double(I); %转换成双精度类型T=dctmtx(8); %产生DCT 变换核B=blkproc(I1,[8 8],'P1*x*P2',T,T');mask=[1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0]; %构造出二值掩膜,仅保留左上角的十个DCT 低频系数B2=blkproc(B,[8 8],'P1.*x',mask); %将DCT 系数矩阵乘以二值掩膜I2=blkproc(B2,[8 8],'P1*x*P2',T',T); %反DCT 操作,得出处理后图像subplot(1,2,1),imshow(I1);subplot(1,2,2),imshow(I2);corr2(I1,I2); %求出原图像数据与处理后图像的相关性,越接近1 说明两者差别少ansI = imread('C:\Documents and Settings\1\桌面\12.jpg');I = rgb2gray(I);I1=im2double(I); %转换成双精度类型T=dctmtx(8); %产生DCT 变换核B=blkproc(I1,[8 8],'P1*x*P2',T,T');mask=[0 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0]; %构造出二值掩膜,仅保留左上角的十个DCT 低频系数B2=blkproc(B,[8 8],'P1.*x',mask); %将DCT 系数矩阵乘以二值掩膜I2=blkproc(B2,[8 8],'P1*x*P2',T',T); %反DCT 操作,得出处理后图像subplot(1,2,1),imshow(I1);subplot(1,2,2),imshow(I2);corr2(I1,I2); %求出原图像数据与处理后图像的相关性,越接近1 说明两者差别少ans。
matabl数字图像处理

实验:1.实验目的1、理解图像退化模型。
2、掌握逆滤波器,维纳滤波器的使用。
2.实验内容1、任选一幅图像,模拟图像降质的过程。
2、给该图像加上任意一种噪声。
3、给这幅已经降质的图像利用逆滤波器,维纳滤波器分别进行复原。
3.程序代码和观察结果1.代码如下:I = imread('01.jpg');figure;imshow(I);title('原图像');运行后显示下图:对图像进行降质处理:PSF=fspecial('motion',40,75);MF=imfilter(I,PSF,'circular');noise=imnoise(zeros(size(I)),'gaussian',0,0.001);MFN=imadd(MF,im2uint8(noise));figure(2);imshow(MFN,[]);title('运动模糊图像');figure(2);imshow(MFN,[]);title('运动模糊图像')运行结果如下图:2.给图像加上噪声:模拟给原图加上高斯噪声:J = imnoise(I,'gaussian',0.02);imshow(J); title('高斯噪声后的图像');运行结果如下:3.1逆滤波处理:NSR=sum(noise(:).^2)/sum(MFN(:).^2);figure(3);imshow(deconvwnr(MFN,PSF,NSR),[]);title('逆滤波复原');运行结果如下:3.2 维纳滤波复原处理:imshow(deconvwnr(MFN,PSF,NSR),[]);title('维纳滤波复原');。
数字图像处理试验代码

subPlot(2,4,2);Imshow(J2);
subPlot(2,4,3);Imshow(S2);
subPlot(2,4,4);Imshow(J1);
subPlot(2,4,5);Imshow(S1);
subPlot(2,4,6);Imshow(J3);
[M,N]=size(C1);
fori=1:M
forj=1:N
if(C1(i,j)>0.1)
C1(i,j)=1;
else
C1(i,j)=0;
end
end
end
C4=mat2gray(C1);
subplot(2,3,5);imshow(C4);title('边缘');
end
ratio_delete=8/zippedHuffman;
zipped=num2str(zippedHuffman);压缩后的平均码长
disp(strcat('平均码长','=',zipped));
ad=num2str(ratio_delete);str2=strcat(ad,'%');
disp(strcat('压缩比','=',str2));
实验24
InImg=ImRead('D:\sy.jpg');
I=rgb2gray(InImg);
J1=Imnoise(I,'gaussian',0,0.01);S1=medfilt2(J1);
J2=Imnoise(I,'salt & pepper');S2=medfilt2(J2);
数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的1.了解图像的算术运算在数字图像处理中的初步应用。
2.体会图像算术运算处理的过程和处理前后图像的变化。
二、实验步骤1.图像的加法运算-imadd对于两个图像和的均值有:推广这个公式为:其中,。
这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。
说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。
代码:I1 = imread('rice.png');I2 = imread('cameraman.tif');I3 = imadd(I1, I2,'uint8');I4 = imadd(I1, I2,'uint16');subplot(2, 2, 1), imshow(I1), title('Ô-ʼͼÏñ1');subplot(2, 2, 2), imshow(I2), title('Ô-ʼͼÏñ2');subplot(2, 2, 3), imshow(I3), title('8λͼÏñÏÔʾ');subplot(2, 2, 4), imshow(I4), title('16λͼÏñÏÔʾ');结果截图:2.图像的减法运算-imsubtract说明:背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。
数字图像处理——图像空余增强实验源代码及实验报告

试验一一, 实验目的上机实验是为训练学生的实际程序设计能力安排的、包含在教学课时内的教学内容。
实验目的是:1 , 进一步深入理解相关部分的基本概念和授课内容。
2, 进一步提高实际动手进行程序设计的能力。
二,实验要求(1), 熟悉Matlab软件、编程以及图像处理工具箱。
掌握Matlab的操作界面和基本操作流程掌握m文件的使用掌握Matlab关于图像的读入、输出的处理函数,比如:imread、imshow、figure、Subplot、imwrite、colormap(2), 利用图像处理工具箱进行空域图像增强实验利用Matlab的图像处理工具箱中提供的函数进行“点运算”利用Matlab的图像处理工具箱中提供的函数进行“算术运算”灰度切割、分段线性变换、位图切割:需要进行Matlab编程图像平均减少噪声:需要进行Matlab编程要求至少实现5个(包括5个)以上的,在课程中讲过的图像空域增强方法。
三,程序设计基本思想Matlab关于图像的读入,输出的处理函数以及matlab图像处理工具箱里的函数可在matlab中能直接调用,多做几个试验就能熟练掌握运用这几个函数;后面的需要用matlab编程来实现数字图像处理功能的试验需自己编写源程序,做完以上两个部分,这个试验就完成了。
四,原理概述a)学会调用matlab图像处理工具箱的函数,这个可以在matlab中直接试验。
b)第二部分,要求用matlab编程工具来实现图像的灰度切割,位图切割等功能。
(1),灰度切割的原理:灰度切割实际上是分段函数线性变换的一种处理方法,他所要实现的主要功能是变幻某一段灰度值的灰度值(将之变亮或变暗或根据要求做其他方面的变幻),编写源程序时只需提出带改变部分的灰度值,对其进行符合要求的变化即可。
(2),位图切割的原理:位图切割同样是分段线性变换的一种,不同的是文图切割中把一幅图像“分个八层”,每层都含有原图的部分信息,编写源代码时,可以去提出或除某一位图,显示出代表的信息。
数字图像处理 实验代码

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]
%g(mx+1:m,my+1:n,1:x)=f(1:m-mx,1:n-my ,1:x); g(1:m-mx,1:n-my ,1:x)=f(mx+1:m,my+1:n,1:x); figure; imshow(uint8(g));
end
3. f=imread('hehua1.bmp'); [m,n]=size(f); for i=50:10:200 m=i; n=i; f2=imcrop(f,[n,n,m,m]); figure; imshow(uint8(f2)); end
(4) 图像旋转imrotate函数,语法格式为: B = imrotate(A,angle,’crop’),参数crop用于指定裁剪旋转后超出图像的部分。
三、实验内容 (1) 将图像hehua.bmp裁剪成200X200大小 (2) 制作动画,将一幅图像逐渐向左上角平移移出图像区域,空白的地方用白色 填充 (3) 利用剪切图像函数制作动画 (4) 将图像分别放大1.5倍和缩小0.8倍,插值方法使用双线性插值法,分别显 示图像。 (5) 将图像水平镜像,再顺时针旋转45度,显示旋转后的图像。 (6) 将图像分别进行水平方向30度错切,垂直方向45度错切,分别显示结果 四、 实验环境 Windows下matlab编程环境
数字图像处理实验及报告(含源码)

大学数字图像处理实验报告设计题目:数字图像处理专业名称:软件工程班级: 1 学号: 1 姓名: MARK 指导教师:2016年5月16日目录实验一数字图像的采集和Photoshop软件的操作 (4)1.1实验目的 (4)1.2实验任务及要求 (4)1.3实验内容、步骤和结果 (4)1.4 结果分析 (7)实验二图像的傅里叶变换 (8)2.1实验目的 (8)2.2实验任务及要求 (8)2.3实验内容、步骤和结果 (8)2.4 结果分析 (11)实验三图像的灰度变换和直方图变换 (12)3.1实验目的 (12)3.2实验任务及要求 (12)3.3实验内容、步骤和结果 (12)3.4 结果分析 (16)实验四图像的平滑处理 (17)4.1实验目的 (17)4.2实验任务及要求 (17)4.3实验内容、步骤和结果 (17)4.4 结果分析 (20)实验五 (21)5.1实验目的 (21)5.2实验任务及要求 (21)5.3实验内容、步骤和结果 (21)5.4 结果分析 (24)实验六 (26)6.1实验目的 (26)6.2实验任务及要求 (26)6.3实验内容、步骤和结果 (26)6.4 结果分析 (28)实验一数字图像的采集和Photoshop软件的操作1.1实验目的1、熟悉并掌握MATLAB,PHOTOSHOP等工具的使用;2、实现图像的读取、显示、代数运算和简单的变换。
1.2实验任务及要求1、根据实验内容在MATLAB中编写相应地代码,使结果符合题目要求;2、在PHOTOSHOP中实现与MATLAB中相同对图像的处理,进行对比;3、完成实验报告。
1.3实验内容、步骤和结果1、实验内容:a)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口上分成三个子窗口来分别显示RGB图像、灰度图像和二值图像,注上文字标题;b)对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题;c)对一幅图像进行灰度变化,实现图像变亮,变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题;d)学会常用数字图像处理软件Photoshop的功能操作练习。
数字图像处理实验matlab

计算机图像处理:学号:班级:实验一:了解数字图像处理平台一、实验目的(1)学会使用扫描仪;(2)熟悉MATLAB软件。
二、实验容(1)用扫描仪扫一幅彩色图片;一幅灰度图片。
(2)熟悉MATLAB的主界面窗口中各个窗口的功能,利用不同的矩阵输入方式给矩阵赋值,了解MATLAB的简单编程及矩阵基本知识;(3)掌握使用MATLAB的帮助来获得更多的信息。
三、实验仪器设备扫描仪、计算机和MATLAB应用软件。
实验二:图像处理一、实验目的(1)通过应用MATLAB语言编程实现对图像的处理,进一步熟悉MATLAB软件的编程及应用;(2)通过实验进一步掌握图像处理的基本技术和方法。
二、实验容1.应用MATLAB语言编写显示一幅灰度图像、二值图像、索引图像及彩色图像的程序,并进行相互之间的转换。
显示原始图像:>>I=imread('D:\tu.jpg');>> imshow(I);RGB 灰度图像: 代码:>> I=imread('D:\tu.JPEG'); >> imshow(I)>> graytu=rgb2gray(I); >> subplot(1,2,1); >> subimage(I); >> subplot(1,2,2); >> subimage(graytu) 效果:1002003004005010015020025030010020030040050100150200250300RGB 转二值图像: 代码:>> [indtu,map]=rgb2ind(I,0.5); >> subplot(1,2,1); >> subimage(I); >> subplot(1,2,2); >> subimage(indtu,map) 效果:100200300400100200300100200300400100200300索引转RGB 图像: 代码:>> I1=ind2rgb(indtu,map); >> subplot(1,2,1);>> subimage(indtu,map); >> subplot(1,2,2); >> subimage(I1) 效果:100200300400100200300100200300400100200300索引转灰度图像: 代码:>> I2gtu=ind2gray(indtu,map); >> subplot(1,2,1);>> subimage(indtu,map); >> subplot(1,2,2); >> subimage(I2gtu) 效果:100200300400100200300100200300400100200300灰度转索引图像: 代码:[g2itu,map]=gray2ind(graytu,64); >> subplot(1,2,1); >> subimage(graytu); >> subplot(1,2,2); >> subimage(g2itu,map) 效果:100200300400100200300100200300400100200300RGB 转二值图像: 代码:>> r2bwtu1=im2bw(I,0.8); >> subplot(1,2,1); >> subimage(I); >> subplot(1,2,2);>> subimage(r2bwtu1)代码: 效果:100200300400100200300100200300400100200300灰度转二值图像 代码:g2bwtu1=im2bw(graytu,0.8); >> subplot(1,2,1); >> subimage(graytu); >> subplot(1,2,2); >> subimage(g2bwtu1) 效果:100200300400100200300100200300400100200300索引转二值图像 代码:>> i2bwtu=im2bw(indtu,map,0.5); >> subplot(1,2,1);>> subimage(indtu,map); >> subplot(1,2,2); >> subimage(i2bwtu) 效果:1002003004001002003001002003004001002003002. 应用MATLAB 工具箱演示一幅图像的傅里叶变换、离散余弦变换,观察其频谱图,然后将它们进行逆变换,观察逆变换后的图像 (1) 傅里叶正变换 代码:>> F=fft2(graytu); >> subplot(1,2,1); >> subimage(graytu); >> subplot(1,2,2);>> subimage(log(abs(F)),[3,10]) 效果:100200300400100200300100200300400100200300(2) 傅里叶反变换 代码:>> IF=ifft2(F); >> subplot(1,2,1);>> subimage(log(abs(F)),[3,10]); >> subplot(1,2,2); >> subimage(uint8(IF)) 效果:100200300400100200300100200300400100200300(3) DCT 变换 代码:>> B=dct2(graytu); >> subplot(1,2,1); >> subimage(graytu); >> subplot(1,2,2);>> subimage(log(abs(B)),[3,5]) 效果:100200300400100200300100200300400100200300(4) IDCT 变换 代码:>> iB=idct2(B); >> subplot(1,2,1);>> subimage(log(abs(B)),[3,5]); >> subplot(1,2,2); >> subimage(uint8(iB)) 效果:100200300400100200300100200300400100200300总结:傅里叶变化:傅里叶变换是一种特殊的积分变换。
数字图像处理 实验报告(完整版)

数字图像处理实验一 MATLAB数字图像处理初步一、显示图像1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;实验结果如下图:源代码:>>I=imread('lily.tif')>> whos I>> imshow(I)二、压缩图像4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。
7.用imread()读入图像Sunset.jpg和Winter.jpg;8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小;9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。
其中9的实验结果如下图:源代码:4~6(接上面两个) >>I=imread('lily.tif')>> imfinfo 'lily.tif';>> imwrite(I,'lily.jpg','quality',20);>> imwrite(I,'lily.bmp');7~9 >>I=imread('Sunset.jpg');>>J=imread('Winter.jpg')>>imfinfo 'Sunset.jpg'>> imfinfo 'Winter.jpg'>>figure(1),imshow('Sunset.jpg')>>figure(2),imshow('Winter.jpg')三、二值化图像10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。
中科大数字图像处理作业1

数字图像处理(中国科学技术大学)HOMEWORK#1编号:59SA16173027李南云[在此处键入文档的摘要。
摘要通常是对文档内容的简短总结。
在此处键入文档的摘要。
摘要通常是对文档内容的简短总结。
]SA16173027 李南云P1:a: The size of lena.tiff is 512x512 ;The size of mandril.tiff is 256x256.b: The values of pixels lena(29, 86) is 105;The values of pixels mandril(198, 201) is 158. c:d:P1代码如下:clear all;f = imread('C:\Users\Administrator\Desktop\images\lena.tiff'); figure(1);imshow(f);i = imread('C:\Users\Administrator\Desktop\images\mandril.tiff'); figure(2);imshow(i);s1 = size(f);s2 = size(i);v1 = f(30,87);v2 = i(199,202);p1 = f(103,:);p2 = i(:,69);figure(3);subplot(211);plot(p1);figure(3);subplot(212);plot(p2);n = 128;for j=1:nb(x,j)=i(x,j);f(x,j)=b(x,j);endendfigure(4);imshow(f);P2代码如下:clear all;a = imread('C:\Users\Administrator\Desktop\images\campusdrive.tif'); figure(1);subplot(231);imshow(a);a1 = double(a);b = floor(a1/8);b = b*8;b = uint8(b);subplot(232);imshow(b);c = floor(a1/16);c = c*16;c = uint8(c);subplot(233);imshow(c);d = floor(a1/32);d = d*32;d = uint8(d);subplot(234);e = floor(a1/64);e = e*64;e = uint8(e);subplot(235);imshow(e);f = floor(a1/168);f = f*168;f = uint8(f);subplot(236);imshow(f);4bit时已经出现伪轮廓,5bit基本可以保存图像质量。
数字图像处理实验报告

数字图像处理实验报告实验一数字图像的获取一、实验目的1、了解图像的实际获取过程。
2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。
3、熟练掌握图像读、写、显示、类型转换等matlab函数的用法。
二、实验内容1、读取一幅彩色图像,将该彩色图像转化为灰度图像,再将灰度图像转化为索引图像并显示所有图像。
2、编程实现空间分辨率变化的效果。
三、实验原理1、图像读、写、显示I=imread(‘image.jpg’)Imview(I)Imshow(I)Imwrite(I,’wodeimage.jpg’)2、图像类型转换I=mat2gray(A,[amin,amax]);按指定的取值区间[amin,amax]将数据矩阵A转化为灰度图像I,amin对应灰度0,amax对应1,也可以不指定该区间。
[x,map]=gray2ind(I,n);按指定的灰度级n将灰度图像转化为索引图像,n默认为64I=ind2gray(x,map);索引图像转化为灰度图像I=grb2gray(RGB);真彩色图像转化为灰度图像[x,map]=rgb2ind(RGB);真彩色图像转化为索引图像RGB=ind2rgb(x,map);索引图像转化为真彩色图像BW=im2bw(I,level);将灰度图像转化为二值图像,level取值在[0,1]之间BW=im2bw(x,map,level);将索引图像转化为二值图像,level取值在[0,1]之间BW=im2bw(RGB,level);将真彩色图像转化为二值图像,level取值在[0,1]之间四、实验代码及结果1、in=imread('peppers.png');i=rgb2gray(in);[x,map]=gray2ind(i,128);subplot(131),imshow(in)subplot(132),imshow(i)subplot(133),imshow(x),colormap(map)2、%空间分辨率变化的效果clc,close all,cleari=imread('cameraman.tif');i=imresize(i,[256,256]);i1=i(1:2:end,1:2:end);[m1,n1]=size(i)i2=i1(1:2:end,1:2:end);[m2,n2]=size(i2)i3=i2(1:2:end,1:2:end);[m3,n3]=size(i3)subplot(221),imshow(i),xlabel('256x256')subplot(222),imshow(i1),xlabel('128x128')subplot(223),imshow(i2),xlabel('64x64')subplot(224),imshow(i3),xlabel('32x32')256 x 256128 x 12864 x 6432 x 32实验二图像的几何变换一、实验目的掌握图像的基本几何变换的方法1、图像的平移2、图像的旋转二、实验内容练习用matalb 命令实现图像的平移、旋转操作1、.编写实现图像平移的函数2、用imread 命令从你的硬盘读取一幅256×256灰度图;3、调用平移函数,将256×256灰度图平移100行200列,在同一个窗口中显示平移前和平移后的图像。
遥感数字图像处理实习报告含Matlab处理代码

辽宁工程技术大学《数字图像处理》上机实习报告教学单位辽宁工程技术大学专业摄影测量与遥感实习名称遥感数字图像处理班级测绘研11-3班学生姓名路聚峰学号*********指导教师孙华生实习1 读取BIP 、BIL、BSQ文件一、实验目的用Matlab读取BIP 、BIL、BSQ文件,并将结果显示出来。
遥感图像包括多个波段,有多种存储格式,但基本的通用格式有3种,即BSQ、BIL和BIP格式。
通过这三种格式,遥感图像处理系统可以对不同传感器获取的图像数据进行转换。
BSQ是像素按波段顺序依次排列的数据格式。
BIL 格式中,像素先以行为单位块,在每个块内,按照波段顺序排列像素。
BIP格式中,以像素为核心,像素的各个波段数据保存在一起,打破了像素空间位置的连续性。
用Matlab读取各个格式的遥感数据,是图像处理的前提条件,只有将图像读入Matlab工作空间,才能进行后续的图像处理工作。
二、算法描述1.调用fopen函数用指定的方式打开文件。
2.在for循环中调用fread函数,用指定的格式读取各个像素。
3.用reshape函数,重置图像的行数列数。
4.用imadjust函数调整像素的范围,使其有一定对比度。
5.用imshow显示读取的图像。
三、Matlab源代码1.读取BSQ的源代码:clear allclclines=400;samples=640;N=6;img=fopen('D:\sample_BSQ','rb');for i=1:Nbi=fread(img,lines*samples,'uint8');band_cov=reshape(bi,samples,lines);band_cov2=band_cov'; band_uint8=uint8(band_cov2);tif=imadjust(band_uint8);mkdir('D:\MATLAB','tifbands1')name=['D:\MATLAB\tifbands1\tif',int2str(i),'.tif'];imwrite(tif,name,'tif');tilt=['波段',int2str(i)];subplot(3,2,i),imshow(tif);title(tilt);endfclose(img);2.读取BIP源代码clear allclclines=400;samples=640;N=6;for i=1:Nimg=fopen('D:\MATLAB\sample_BIP','rb');b0=fread(img,i-1,'uint8');b=fread(img,lines*samples,'uint8',(N-1));band_cov=reshape(b,samples,lines);band_cov2=band_cov';%תÖÃband_uint8=uint8(band_cov2);tif=imadjust(band_uint8);mkdir('E:\MATLAB','tifbands')name=['E:\MATLAB\tifbands\tif',int2str(i),'.tif'];imwrite(tif,name,'tif'); %imwrite(A,filename,fmt)tilt=['波段',int2str(i)];subplot(3,2,i),imshow(tif);title(tilt);fclose(img);end3.读取BIL的源代码clear allclclines=400;samples=640;N=6;for i=1:Nbi=zeros(lines,samples);for j=1:samplesimg=fopen('D:\MATLAB\sample_BIL','rb');bb=fread(img,(i-1)*640,'uint8');b0=fread(img,1*(j-1),'uint8');bandi_linej=fread(img,lines,'uint8',1*(N*samples-1));fclose(img);bi(:,j)=bandi_linej;endband_uint8=uint8(bi);tif=imadjust(band_uint8);mkdir('D:\MATLAB','tifbands')name=['D:\MATLAB\tifbands\tif',int2str(i),'.tif'];imwrite(tif,name,'tif');tilt=['²¨¶Î',int2str(i)];subplot(3,2,i),imshow(tif);title(tilt);end四、运行结果图1:读取文件的六个波段图实习2 均值/中值滤波、边缘信息提取一、实验目的与原理各种图像滤波算子可以实现图像的增强,去噪,边缘提取等。
重庆大学数字图像处理实验以及完整源代码

实验三图像中值滤波(2学时)
一、 实验目的: 进一步加深理解和掌握中值滤波的原理和具体算法。能解释用大小和形状不同的 滑动窗口进行中值滤波后图像所呈现的一些特征。 二、 实验内容: 1、矩形邻域中值滤波设计程序,实现3× 3邻域中值滤波。比较处理前后图像效果。 2、十字形中值滤波(选做) 设计程序,实现5× 5十字形中值滤波。比较处理前后图像效果。 三、 实验原理: 对于给定的n个数值{a1, a2, …an}, 将它们按大小有序排列。当n为奇数时,位于中间位 置的那个数值称为这n个数值的中值。记作 med [a1, a2, …an] 设x为M× N待处理图像,经窗口为Wn的中值滤波后,被处理像点(i, j)的输出为: )],([),(),(jixmedjiyjiWn= 式中W (i, j)表示点(i, j)的邻域,它含有n#39;实验 1 原图.jpg'); [m,n]=size(R) figure, imshow(R);title('原图 1'); S1=R*3; figure, imshow(S1);title('a=3,b=0'); imwrite(S1,'1.21.jpg'); N=im2double(R); S2=N*0.5; figure, imshow(S2);title('a=0.5,b=0'); imwrite(S2,'1.22.jpg'); S3=R+10; figure, imshow(S3);title('a=1,b=10'); imwrite(S3,'1.23.jpg'); S4=N+0.5; figure, imshow(S4);title('a=1,b=0.5'); imwrite(S4,'1.24.jpg'); X1=R>64; figure, imshow(X1);title('门限值为 64'); imwrite(X1,'1.41.jpg'); X2=R>128; figure, imshow(X2);title('门限值为 128'); imwrite(X2,'1.42.jpg'); X3=R>192; figure, imshow(X3);title('门限值为 192'); imwrite(X3,'1.43.jpg'); Y=255-R; figure, imshow(Y);title('反转后的图像'); imwrite(Y,'1.51.jpg'); Z1=N.^0.6; figure, imshow(Z1);title('指数变换后的图像'); imwrite(Z1,'1.61.jpg'); Z2=log(N+1) %Z3=im2uint8(Z2) figure,imshow(Z3); figure,imshow(Z2,[]);title('对数变换后的图像'); imwrite(Z2,'1.62.jpg');
数字图像处理实验报告

数字图像处理报告章鱼哥实验项目一(matlab)实验要求:Fig1.bmp是一副亮度和对比度均很低的图像,试用插值外推的图像增强方法改善图像的质量,使花朵和树叶的颜色更加鲜艳润泽。
实验代码:% 插值与外推clear allclose allI=imread('实验项目一.png');A=double(I);Igray=double(rgb2gray(I));Ig3=A;img=A;Ilow=A;Ig3(:,:,1)=Igray; % RGB灰度图Ig3(:,:,2)=Igray;Ig3(:,:,3)=Igray;W=ones(11,11)/121;Ilow=double(imfilter(Ig3,W)); % 模糊图像a=[1 1.5 2.0 2.5 3.0 3.5 ];figurefor k=1:6 % 通过模糊图进行处理img=(1-a(k)).*Ilow+a(k).*A;subplot(2,3,k);imshow(uint8(img),[]); title(['综合修正:系数=',num2str(a(k))]);end实验结果实验项目二(matlab或c/c++)实验要求:试用最邻近插值和双线性插值对Fig2.bmp进行缩小和放大操作。
先缩小12倍,再放大12倍。
描述图像的变化,分析变化的原因,并给出对两种插值方法的评价。
实验原理:1. 最邻近插值(近邻取样法)最邻近插值是一种简单的插值算法,也称为零阶插值。
它输出的像素灰度值就等于距离它映射到的位置最近的输入像素的灰度值。
对于通过反向变换得到的的一个浮点坐标,对其进行简单的取整,得到一个整数型坐标,这个整数型坐标对应的像素值就是目的像素的像素值,也就是说,取浮点坐标最邻近的左上角点(对于DIB是右上角,因为它的扫描行是逆序存储的)对应的像素值。
可见,最邻近插值简单且直观,但得到的图像质量不高;当图像中包含像素之间灰度级有变化的细微结构时,最邻近查值法会在图像中产生人为的加工痕迹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理—实验一源程序:a=imread('rice.png');figure,imshow(a),title('原图');axis on;a=double(a)/256;figure,imhist(a),title('原直方图');axis on;r=[0:0.001:1];s1=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*( 1+0.3*(r-1));s2=[r<=0.5].*(r.^5)*15.9744+[r>0.5].*((r-0.5).^0.2+0.12);a1=[a<0.35].*a*0.3+[a<=0.65].*[a>=0.35].*(0.105+2.6333*(a-0.35))+[a>0.65].* (1+0.3*(a-1));a2=[a<=0.5].*(a.^5)*15.9744+[a>0.5].*((a-0.5).^0.2+0.12);figure,imshow(a1),title('改后一');axis on;figure,imhist(a1),title('改后直方图一');axis on;figure,plot(r,s1),title('变换函数一');axis on;figure,imshow(a2),title('改后二');axis on;figure,imhist(a2),title('改后直方图二');axis on;figure,plot(r,s2),title('变换函数二');axis on;imwrite(a1,'改后rice 一.jpg');imwrite(a2,'改后rice 二.jpg');b=imread('kids.tif');figure,imshow(b),title('原图');axis on;b=double(b)/256;figure,imhist(b);title('原直方图');axis on;s1=r.^0.6;s2=r.^0.4;s3=r.^0.3;b1=imadjust(b,[],[],0.6);b2=imadjust(b,[],[],0.4);b3=imadjust(b,[],[],0.3);figure,imshow(b1),title('改后一');axis on;figure,imhist(b1),title('改后直方图一');axis on;figure,plot(r,s1),title('变换函数一');axis on;figure,imshow(b2),title('改后二');axis on;figure,imhist(b2),title('改后直方图二');axis on;figure,plot(r,s2),title('变换函数二');axis on;figure,imshow(b3),title('改后三');axis on;figure,imhist(b3),title('改后直方图三');axis on;figure,plot(r,s3),title('变换函数三');axis on;imwrite(b1,'改后kids 一.jpg');imwrite(b2,'改后kids 二.jpg');imwrite(b3,'改后kids 三.jpg');c=imread('circuit.tif');figure,imshow(c),title('原图');axis on;c=double(c)/256;figure,imhist(c),title('原直方图');axis on;s=1-r;c=1-c;figure,imshow(c),title('变换后');axis on;figure,imhist(c),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(c,'改后circuit.jpg');d=imread('rice.png');figure,imshow(d),title('原图');axis on;d=double(d)/256;figure,imhist(d),title('原直方图');axis on;r=[0:0.001:1];s=[r<=0.4].*[r>=0.2]*0.6;d=[d<=0.4].*[d>=0.2]*0.6+[d>0.4].*d+[d<0.2].*d;figure,imshow(d),title('变换后');axis on;figure,imhist(d),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(d,'第二次改后rice.jpg');e=imread('Picture.jpg');e=e(:,:,1);e=im2double(e);figure,imshow(e),title('原图');axis on;figure,imhist(e),title('原直方图');axis on;r=[0:0.001:1];s=[r<0.3].*r*1.1+[r>0.65].*r*0.8+[r>=0.3].*[r<=0.65].*(0.11+r*1.5); e=[e<0.3].*e*1.1+[e>0.65].*e*0.8+[e>=0.3].*[e<=0.65].*(0.11+e*1.5); figure,imshow(e),title('变换后');axis on;figure,imhist(e),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(e,'改后Picture.jpg');处理前后图像:结论:不同的灰度变换对最终图像的影响效果是不同的。
通过matlab灰度变化可以增加图像亮度,提高对比度,使视觉效果更好。
数字图像处理—实验二源代码:I1=imread('mountain.jpg');[J1,T1]=histeq(I1,256);figure,subplot(2,3,1),imshow(I1),title('原图');axis on;subplot(2,3,2),imhist(I1),title('原图直方图');axis on;subplot(2,3,4),imshow(J1),title('均衡化后图像');axis on;subplot(2,3,5),imhist(J1),title('均衡化后直方图');axis on;subplot(2,3,6),plot(T1),title('变换函数');axis on;I2=uint8(I1);r=0:1:255;n=([r<=5].*r*1400+[r>5].*[r<=20].*(7000-r*310)+[r>20].*[r<=180].*(900-r*5)...+[r>180].*[r<=225].*(r*8-1440)+[r>225].*[r<=255].*(3060-r.*12));[J2,T2]=histeq(I2,n);figure,subplot(2,3,1),imshow(I2),title('原图');axis on;subplot(2,3,2),imhist(I2),title('原图直方图');axis on;subplot(2,3,4),imshow(J2),title('规定化后图像');axis on;subplot(2,3,5),imhist(J2),title('规定化后直方图');axis on;subplot(2,3,6),plot(T2),title('变换函数');axis on;I3=im2double(I1);[m n]=size(I3);r1=zeros(1,256);p=r1;s1=r1;s2=r1;a=0;for k=1:256for i=1:mfor j=1:nif(I3(i,j)==((k-1)/255));r1(k)=r1(k)+1;endendendp(k)=r1(k)/65536;s1(k)=a+p(k);a=s1(k);s2(k)=round(s1(k)/(1/255))/255;end[m n]=size(I3);t=0;for k=1:256t=t+1;if( k==256||s2(k)~=s2(k+1))for i=1:mfor j=1:nif(I3(i,j)>=(k-t)/255&&I3(i,j)<=(k-1)/255)I4(i,j)=s2(k);endendendt=0;endendI3=mat2gray(I3);I4=mat2gray(I4);figure,subplot(2,3,1),imshow(I3),title('原图');axis on;subplot(2,3,2),imhist(I3),title('原图直方图');axis on;subplot(2,3,4),imshow(I4);title(' 自编函数均衡化');axis on; subplot(2,3,5);imhist(I4);title(' 自编函数均衡化后直方图');axis on; subplot(2,3,6),plot(s1),title('变换函数');axis on;处理前后图像:结论:直方图均衡化通过使用累积函数对灰度值进行“调整”以实现对比度的增强,通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。