图像处理实验教学小结

时间:2019-05-15 15:21:42下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《图像处理实验教学小结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《图像处理实验教学小结》。

第一篇:图像处理实验教学小结

实验一:通过学习Matlab的开发环境、基本语法和函数,使学生基本熟悉了Matlab的使用方法、开发规则和基本技巧,同时,通过上机独立练习Matlab图像处理的实例,进一步巩固了所学内容,为后续的Matlab图像处理课程,提供了保证。

实验二:通过本次课程的学习和实践,使学生对Matlab的图像编码知识有了全面深入的掌握,对Matlab的图像处理方法有了深入的理解和认识,并进一步熟悉了Matlab的基本语法和程序设计流程,为独立开发图像处理程序奠定了良好的基础。

实验三:本次课程是医学图像实习的最后一次实习课,通过本次课程的学习和实践,使学生基本掌握了平滑滤波、中值滤波、sobel算子和laplacian算子应用方法,同时,进一步熟悉和掌握了在Matlab下,图像模板运算的方法和技巧。

大部分学生能够在老师的指导下,独立完成设计工作,并完整正确运行程序,得到正确结果,但有部分学生由于录入速度较慢,没有在课堂完成代码录入工作,安排其在课后完成剩余部分的录入工作,并能够正确运行。

第二篇:matlab图像处理小结

1.function [center, r] = solve_circle(pt1, pt2, pt3)

2.%Effect: solve the circle which across points 'pt1', 'pt2' and 'pt3' 3.%Inputs:

4.%pt1, pt2, pt3: [x, y]

5.%center: the circle center [x0;y0] 6.%r: the radius of the circle 7.%Author: Su dongcai at 2012/1/2 8.A = zeros(2, 2);B = zeros(2, 1);9.[A(1, :), B(1)] = circle2line(pt1, pt2);10.[A(2, :), B(2)] = circle2line(pt2, pt3);11.center = AB;

12.r = norm(pt1'(y2^2 + y2^2)18.%(a-x2)^2 +(b-y2)^2 = r^2 | 19.%Inputs:

20.%pt1, pt2: [x1, y1], [x2, y2] 21.%Outputs:

22.%A: 2[x1-x2, y1-y2]

23.%B:(x1^2 + y1^2)pt2);

26.B = norm(pt1)^2-norm(pt2)^2;

close all;clear;clc;>> i=imread('rice.png');%>> imshow(i);>> background=imopen(i,strel('disk',15));>> i2=imsubtract(i,background);%>> figure,imshow(i2);>> i3=imadjust(i2,stretchlim(i2),[0 1]);%>> figure,imshow(i3);>> level=graythresh(i3);>> bw=im2bw(i3,level);%>> figure,imshow(bw);>> [labeled,numobjects]=bwlabel(bw,4);graindata=regionprops(labeled,'all');

close all;clear;clc;i=imread('rice.png');background=imopen(i,strel('disk',15));i2=imsubtract(i,background);i3=imadjust(i2,stretchlim(i2),[0 1]);level=graythresh(i3);bw=im2bw(i3,level);[labeled,numobjects]=bwlabel(bw,4);data=regionprops(labeled,'all');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.2 close all;clear;clc;>> i=imread('r.jpg');%>> figure,imshow(i);>> imgray=rgb2gray(i);>> figure,imshow(imgray)>> background=imopen(imgray,strel('disk',15));>> i2=imsubtract(imgray,background);%>> figure,imshow(i2);>> i3=imadjust(i2,stretchlim(i2),[0 1]);%>> figure,imshow(i3);>> level=graythresh(i3);>> bw=im2bw(i3,level);%>> figure,imshow(bw);>> imnobord=imclearborder(bw,4);%>> figure,imshow(imnobord);>> [labeled,numobjects]=bwlabel(bw,4);>> rgb_label=label2rgb(labeled,@spring,'c','shuffle');>> figure,imshow(rgb_label);>> graindata=regionprops(labeled,'all');hold on;for k=1:numobjects lab=sprintf('%d',k);text(graindata(k).Centroid(1),graindata(k).Centroid(2),lab,'Color','k');end hold off;%剔除碎米粒

>> idxdown=find([graindata.Area]<150);%剔除碎米粒 little=ismember(labeled,idxdown);figure,imshow(little);

[lab_little,num_little]=bwlabel(little,4);rgb_little=label2rgb(lab_little,@spring,'c','shuffle');figure,imshow(rgb_little);

little_data=regionprops(lab_little,'all');hold on;for k=1:num_little lab=sprintf('%d',k);text(little_data(k).Centroid(1),little_data(k).Centroid(2),lab,'Color','k');end hold off;%>> graindata(idxdown,:)=[];%剔除碎米粒 %剔除连接米粒

>> idxup=find([graindata.Area]>250);%剔除连接米粒 big=ismember(labeled,idxup);figure,imshow(big);

[lab_big,num_big]=bwlabel(big,4);rgb_big=label2rgb(lab_big,@spring,'c','shuffle');figure,imshow(rgb_big);

big_data=regionprops(lab_big,'all');hold on;for k=1:num_big lab=sprintf('%d',k);text(big_data(k).Centroid(1),big_data(k).Centroid(2),lab,'Color','k');end hold off;%>> graindata(numup,:)=[];%剔除连接米粒 %获取完整米粒

idxsuit=find([graindata.Area]>=150&[graindata.Area]<=250);suit=ismember(labeled,idxsuit);figure,imshow(suit);%获取完整米粒 [lab_suit,num_suit]=bwlabel(suit,4);suit_data=regionprops(lab_suit,'all');hold on;for k=1:num_suit signature=sprintf('%d',k);text(suit_data(k).Centroid(1),suit_data(k).Centroid(2),signature,'Color','r');end hold off;%获取完整米粒 whos graindata whos little_data whos big_data whos suit_data

>> graindata >> mean([graindata.Area])>> mean([graindata.Eccentricity])>> mean([graindata.MajorAxisLength])>> mean([graindata.MinorAxisLength])>> mean([graindata.EquivDiameter])>> figure,hist([graindata.Area],20);>> figure,hist([graindata.Eccentricity],20);>> figure,hist([graindata.MajorAxisLength],20);>> figure,hist([graindata.MinorAxisLength],20);>> figure,hist([graindata.EquivDiameter],20);

data=[graindata.Area] data=[graindata.Centroid] data=[graindata.BoundingBox] data=[graindata.SubarrayIdx] data=[graindata.MajorAxisLength] data=[graindata.MinorAxisLength] data=[graindata.Eccentricity] data=[graindata.Orientation] data=[graindata.ConvexHull] data=[graindata.ConvexImage] data=[graindata.ConvexArea] data=[graindata.Image] data=[graindata.FilledImage] data=[graindata.FilledArea] data=[graindata.EulerNumber] data=[graindata.Extrema] data=[graindata.EquivDiameter] data=[graindata.Solidity] data=[graindata.Extent] data=[graindata.PixelIdxList] data=[graindata.PixelList]

Area 计算各个连通区域中的象素总数 BoundingBox 包含相应区域的最小矩形 Centroid 给出每个区域的质心

MajorAxisLength 与区域具有相同标准二阶中心矩(又叫标准差)的椭圆的长轴长度 MinorAxisLength 与区域具有相同标准二阶中心矩的椭圆的短轴长度 Eccentricity 与区域具有相同标准二阶中心矩的椭圆的离心率

Orientation 与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角 Image 二值图像,与某区域具有相同大小的逻辑矩阵。

FilledImage 与上相同,唯一区别是这是个做了填充的逻辑矩阵!本例中和上面的没有区别,只有 区域有空洞时才有明显差别。

FilledArea 是标量,填充区域图像中的 on 像素个数

ConvexHull 是p行2列的矩阵,包含某区域的最小凸多边形 ConvexImage 二值图像,用来画出上述的区域最小凸多边形 ConvexArea 是标量,填充区域凸多边形图像中的 on 像素个数 EulerNumber 等于图像中目标个数减去这些目标中空洞的个数 Extrema 8行2列矩阵,八方向区域极值点

EquivDiameter 是标量,等价直径:与区域具有相同面积的圆的直径.计算公式为:sqrt(4*Area/pi)

Solidity 是标量,同时在区域和其最小凸多边形中的像素比例。计算公式为: Area/ConvexArea,这也是个仿射特征,实际上反映出区域的固靠性程度。

Extent 是标量,同时在区域和其最小边界矩形中的像素比例。计算公式为:Area除以边界矩 形面积,这也是个仿射特征,实际上反映出区域的扩展范围程度。

PixelIdxList p元向量,存储区域像素的索引下标

PixelList p行ndims(L)列矩阵,存储上述索引对应的像素坐标 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 基于特定原则的区域选择

当你要基于特定准则条件选择某个区域时,将函数 ismember 和 regionprops 联合使用是很有用处的。例如:创建一个只包含面积大于80的二值图像,用以下命令

idx = find([stats.Area] > 80);BW2 = ismember(L,idx);regionprops函数的扩展思路

在regionprops函数的基础上,你可以使用它提供的基本数据来扩展它的功能,比如我就将区域的曲率数据和骨架数据作为它的另外属性值来开发,从而希望它能用来做更细致的特征提取。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.2 P221图像粒度测定(雪花)>> i=imread('snowflakes.png');>> figure,imshow(i);>> %(2)>> clahei=adapthisteq(i,'numtiles',[10 10]);>> clahei=imadjust(clahei);>> imshow(clahei);>> gi=imadjust(im2double(i),[],[0 1]);>> figure,imshow(gi),title('adjusted grayscale image');>> %(3)>> se=strel('disk',10);>> topi=imtophat(gi,se);>> figure,imshow(topi),title('top-hat image');>> %(4)>> for counter=0:22 remain=imopen(clahei,strel('disk',counter));intensity_area(counter+1)=sum(remain(:));end >> figure,plot(intensity_area,'m-*'),grid on;>> title('sum of opening(pixels)');>> title('sum of opening values in opened image as a function of radius');>> xlabel('radius of opening(pixels)');>> ylabel('pixel value sum of opened objects(intensity)');>> >> >> >> for counter=0:20 remain=imopen(topi,strel('disk',counter));surfarea(counter+1)=sum(remain(:));end >> figure,plot(surfarea,'m-*'),grid on;>> set(gca,'xtick',[0 2 4 6 8 10 12 14 16 18 20]);>> title('surface area of opened objects as a function of radius');>> xlabel('radius of opening(pixels)');>> ylabel('surface area of opened objects(pixels)');>> %(5)>> intensity_area_prime=diff(intensity_area);>> figure,plot(intensity_area_prime,'m-*'),grid on;>> title('Granulometry(size distrubution)of snowflakes');>> set(gca,'xtick',[0 2 4 6 8 10 12 14 16 18 20 22]);>> xlabel('radius of snowflakes(pixels)');>> ylabel('sum of pixel values in snowflakes as a function of radius');>> derivsurfarea=diff(surfarea);>> figure,plot(derivsurfarea,'m-*'),grid on;>> title('granulometry(size distribution)of stars');>> xlabel('radius of stars(pixels)');>> ylabel('loss of pixels between two successive openings');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.2 花椒检测 clc;clear;close all;i=imread('gj.jpg');imshow(i);icanny=edge(i,'canny');imshow(icanny);se90=strel('line',2,90);se0=strel('line',2,0);bwsdil=imdilate(icanny,[se90 se0]);figure,imshow(bwsdil),title('dilated');ifill=imfill(bwsdil,'holes');figure,imshow(ifill);

%bwero=imerode(bwsdil,[se90 se0]);%figure,imshow(bwero);%i2fill=imfill(bwero,'holes');%figure,imshow(bwero);%imshow(i2fill);

%bwnobord=imclearborder(bwsdil,4);%figure,imshow(bwnobord);bwnobord=imclearborder(ifill,4);figure,imshow(bwnobord);se=strel('disk',5);bwc=imclose(bwnobord,se);bwco=imopen(bwnobord,se);figure,imshow(bwc);figure,imshow(bwco);%mask=bwsdil&bwco;%figure,imshow(mask);clc [labeled,numobjects]=bwlabel(bwco);numobjects

jdata=regionprops(labeled,'all');%jdata

jarea=[jdata.Area];mean(jarea)max(jarea)min(jarea)hist(jarea,255)jdata.Eccentricity %std([jdata.Eccentricity])/(Mean([jdata.Eccentricity])jstd=std([jdata.Eccentricity])jmean=Mean([jdata.Eccentricity])jcv=jstd/jmean

>> std([jdata.Area])/ mean([jdata.Area])%面积的变异系数

>> std([jdata.Eccentricity])/ mean([jdata.Eccentricity])%椭圆的变异系数 >> std([jdata.MajorAxisLength])/ mean([jdata.MajorAxisLength])>> std([jdata.MinorAxisLength])/ mean([jdata.MinorAxisLength])>> std([jdata.EquivDiameter])/ mean([jdata.EquivDiameter])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.06.06 rice.png close all;clear;clc >> i=imread('rice.png');imshow(i);background=imopen(i,strel('disk',15));figure,imshow(background);i2=imsubtract(i,background);figure,imshow(i2);i3=imadjust(i2,stretchlim(i2),[0 1]);figure,imshow(i3);level=graythresh(i3);bw=im2bw(i3,level);figure,imshow(bw);imnobord=imclearborder(bw);[label,numobjects]=bwlabel(imnobord,4);numobjects rgb_label=label2rgb(label,@spring,'c','shuffle');figure,imshow(rgb_label);graindata=regionprops(label,'all');graindata

>> numdown=find([graindata.Area]<150);>> graindata(numdown,:)=[];>> numup=find([graindata.Area]>250);>> graindata(numup,:)=[];>> graindata

>> std([graindata.Area])/ mean([graindata.Area])%面积的变异系数

>> std([graindata.Eccentricity])/ mean([graindata.Eccentricity])%椭圆的变异系数

>> std([graindata.MajorAxisLength])/ mean([graindata.MajorAxisLength])>> std([graindata.MinorAxisLength])/ mean([graindata.MinorAxisLength])>> std([graindata.EquivDiameter])/ mean([graindata.EquivDiameter])%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.06.06 rice的垩白度检测 >> clear;close all;clc;>> rgb=imread('r.jpg');>> close all;>> imshow(rgb);>> i=rgb2gray(rgb);>> j=medfilt2(i,[5 5]);>> figure,imshow(i);>> figure,imshow(j);>> imhist(j,256);>> t=0.3;>> v=imadjust(j,[t 1],[],1);>> imhist(v,256);>> t_c=0.6;>> bw_v=im2bw(v,0.01);>> chalk=imadjust(v,[t_c 1],[],1);>> bw_chalk=im2bw(chalk,0.01);>> figure,imshow(v);>> figure,imshow(bw_v);>> figure,imshow(chalk);>> figure,imshow(bw_chalk);>> degree_chalkness=bwarea(bw_chalk)/bwarea(bw_v)*100 >> bw=im2bw(j,t);>> figure,imshow(bw);>> se=(ones(3,3));>> bw1=imerode(bw,se);%两次腐蚀 >> figure,imshow(bw1);>> bw2=imerode(bw1,se);>> figure,imshow(bw2);

>> [l,num]=bwlabel(bw2);%标记腐蚀后的大米图像 >> t_chalk=100;%设置垩白面积的下限 >> compare=(l)&(chalk>t_chalk);%>> compare=(bw2)&(bw_chalk>t_chalk);>> [r,c]=find(compare);%标记垩白米粒的位置 >> result=bwselect(l,c,r);%显示只含有垩白米粒的图像 >> figure,imshow(result);

>> [l_chalk,num_chalk]=bwlabel(result);%标记垩白米粒图像,便于计数 >> rate_chalky_grains=num_chalk/num*100;>> rate_chalky_grains

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.17 bwmorph函数 >> help bwmorph BWMORPH Perform morphological operations on binary image.BW2 = BWMORPH(BW1,OPERATION)applies a specific morphological operation to the binary image BW1.BW2 = BWMORPH(BW1,OPERATION,N)applies the operation N times.N can be Inf, in which case the operation is repeated until the image no longer changes.OPERATION is a string that can have one of these values: 'bothat' Subtract the input image from its closing 'bridge' Bridge previously unconnected pixels 'clean' Remove isolated pixels(1's surrounded by 0's)'close' Perform binary closure(dilation followed by erosion)'diag' Diagonal fill to eliminate 8-connectivity of background 'dilate' Perform dilation using the structuring element ones(3)'erode' Perform erosion using the structuring element ones(3)'fill' Fill isolated interior pixels(0's surrounded by 1's)'hbreak' Remove H-connected pixels 'majority' Set a pixel to 1 if five or more pixels in its 3-by-3 neighborhood are 1's 'open' Perform binary opening(erosion followed by dilation)'remove' Set a pixel to 0 if its 4-connected neighbors are all 1's, thus leaving only boundary pixels 'shrink' With N = Inf, shrink objects to points;shrink objects with holes to connected rings 'skel' With N = Inf, remove pixels on the boundaries of objects without allowing objects to break apart 'spur' Remove end points of lines without removing small objects completely.'thicken' With N = Inf, thicken objects by adding pixels to the exterior of objects without connected previously unconnected objects 'thin' With N = Inf, remove pixels so that an object without holes shrinks to a minimally connected stroke, and an object with holes shrinks to a ring halfway between the hold and outer boundary 'tophat' Subtract the opening from the input image

Class Support-------------The input image BW1 can be numeric or logical.It must be 2-D, real and nonsparse.The output image BW2 is logical.Examples--------BW1 = imread('circles.png');imview(BW1)BW2 = bwmorph(BW1,'remove');BW3 = bwmorph(BW1,'skel',Inf);imview(BW2)imview(BW3)

See also erode, dilate, bweuler, bwperim.Reference page in Help browser doc bwmorph

BW1 = imread('circles.png');figure,imshow(BW1)BW2 = bwmorph(BW1,'erode');figure,imshow(BW2)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %边界提取 b=bwmorph(bw,'remove');b=bwperim(bw,8);%又叫边界象素测定 b=edge(bw,'canny');%又叫边界提取 %去除孤立象素点

nosinglepixel=bwmorph(bw,'clean');%去除小面积物体

nosmall=bwareaopen(bw,CNN);%阈值处理再取反

bw=~im2bw(i,graythresh(i));

%开运算(消除小物体)与闭运算(填充物体内细小空洞)se=strel('disk',6);iopen=imopen(bw,se);iclose=imclose(bw,se);%腐蚀与膨胀联合操作 %(1)创建结构元素 se=strel('rectangle',[40 30]);%(2)使用结构元素腐蚀图像 bw1=imread('circbw.tif');bw2=imerode(bw1,se);imshow(bw2);%(3)逆操作,回复矩形原来大小 bw3=imdilate(bw2,se);figure,imshow(bw3);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.18花椒子

%直接对灰度图进行canny运算 >> i=imread('nut.bmp');>> figure,imshow(i);>> ig=rgb2gray(i);>> figure,imshow(ig);%igcanny=edge(ig,'canny');%igcfill=imfill(igcanny,'hole');igcanny_thresh=edge(ig,'canny',(graythresh(ig)*.1));igcfill=imfill(igcanny_thresh,'hole');>> figure,imshow(igcfill);

%先对灰度图滤波,再进行canny运算

>> imed=medfilt2(ig);%中值滤波后对图像边界有一定的损伤!!>> imedcanny=edge(imed,'canny');>> imedfill=imfill(imedcanny,'hole');>> figure,imshow(imedfill);>> nosmall=bwareaopen(imedfill,150);>> figure,imshow(nosmall);

%注意:若对灰度图像先拉氏锐化,在canny提取边界,效果不大好!!%结论:无需拉氏锐化,也不必中值滤波,可直接canny提取边界!!>> ifill=igcfill|imedfill;>> figure,imshow(ifill);>> nosmall=bwareaopen(ifill,150);>> figure,imshow(nosmall);

%当t=0.55时,阈值处理再canny运算的效果 >> imhist(ig);>> t=0.55;>> v=imadjust(ig,[0 t],[],1);>> vcanny=edge(v,'canny');>> vfill=imfill(vcanny,'hole');>> figure,imshow(vfill);>> ifill=igcfill|vfill;>> figure,imshow(ifill);>> nosmall=bwareaopen(ifill,150);>> figure,imshow(nosmall);

%当t=0.6时,阈值处理再canny运算的效果的效果 >> t=0.6;>> v=imadjust(ig,[0 t],[],1);>> vcanny=edge(v,'canny');>> vfill=imfill(vcanny,'hole');>> figure,imshow(vfill);>> ifill=igcfill|vfill;>> figure,imshow(ifill);>> nosmall=bwareaopen(ifill,150);>> figure,imshow(nosmall);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %处理花椒子

>> i=imread('nut.bmp');%figure,imshow(i);ig=rgb2gray(i);figure,imshow(ig);>> imed=medfilt2(ig);imedcanny=edge(imed,'canny');imedfill=imfill(imedcanny,'hole');%figure,imshow(imedfill);nosmall=bwareaopen(imedfill,150);>> figure,imshow(nosmall);>> [labeled,numobjects]=bwlabel(nosmall,4);>> rgb_label=label2rgb(labeled,@spring,'c','shuffle');%>> figure,imshow(rgb_label);>> nutdata=regionprops(labeled,'all');>> min([nutdata.Solidity])

>> rectangle('Position', [253.5000 207.5000 26.0000 28.0000])%画矩形

>> rectangle('Position', [250.5000 50.5000 27.0000 26.0000])>> figure,imshow(nutdata(1).Image)%只显示1号物体的图像

>> figure,imshow(nutdata(1).ConvexImage)%画出1号物体的凸多边形 >> std([nutdata.Eccentricity])/ mean([nutdata.Eccentricity])std([nutdata.Area])/ mean([nutdata.Area])std([nutdata.Solidity])/ mean([nutdata.Solidity])>> std([nutdata.Centroid])/ mean([nutdata.Centroid])std([nutdata.MajorAxisLength])/ mean([nutdata.MajorAxisLength])std([nutdata.MinorAxisLength])/ mean([nutdata.MinorAxisLength])std([nutdata.Orientation])/ mean([nutdata.Orientation])std([nutdata.EquivDiameter])/ mean([nutdata.EquivDiameter])std([nutdata.Extent])/ mean([nutdata.Extent])std([nutdata.Extrema])/ mean([nutdata.Extrema])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %处理花椒皮 close all;clc;clear;>> i=imread('p.bmp');imshow(i);ig=rgb2gray(i);figure,imshow(ig);imed=medfilt2(ig);imedcanny=edge(imed,'canny');figure,imshow(imedcanny);>> se90=strel('line',2,90);se0=strel('line',2,0);bwsdil=imdilate(imedcanny,[se90 se0]);figure,imshow(bwsdil),title('dilated');ifill=imfill(bwsdil,'holes');figure,imshow(ifill);>> bwero=imerode(ifill,[se90 se0]);>> figure,imshow(bwero);>> nosmall=bwareaopen(bwero,150,4);>> figure,imshow(nosmall);>> nobord=imclearborder(nosmall,4);>> figure,imshow(nobord);>> [labeled,numobjects]=bwlabel(nobord,4);>> numobjects >> pdata=regionprops(labeled,'all');>> max([pdata.Solidity])>> std([pdata.Solidity])/mean([pdata.Solidity])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %处理混合图像 >> clear;clc;close all;>> i=imread('m.bmp');%>> figure,imshow(i);>> ig=rgb2gray(i);figure,imshow(ig);imed=medfilt2(ig);%>> figure,imshow(imed);imedcanny=edge(imed,'canny');%>> figure,imshow(imedcanny);>> se90=strel('line',2,90);se0=strel('line',2,0);bwsdil=imdilate(imedcanny,[se90 se0]);%figure,imshow(bwsdil),title('dilated');ifill=imfill(bwsdil,'holes');%figure,imshow(ifill);bwero=imerode(ifill,[se90 se0]);%figure,imshow(bwero);>> nosmall=bwareaopen(bwero,150,4);%figure,imshow(nosmall);nobord=imclearborder(nosmall,4);figure,imshow(nobord);>> [labeled,numobjects]=bwlabel(nobord,4);>> numobjects >> rgb_label=label2rgb(labeled,@spring,'c','shuffle');figure,imshow(rgb_label);>> mexdata=regionprops(labeled,'all');hold on;%以下内容画在同一figure中 centr=[mexdata.Centroid];%寻找重心位置 nums=1:numobjects;for k = 1:numobjects soli=mexdata(k).Solidity;soli_string=sprintf('%2.2f',soli);%等价于转字符串 % signal=num2str(nums(k));signal=sprintf('%d',k);%直接使用打印语句打印序号 text(centr(2*k-1),centr(2*k),signal)%按序标记物体

text(centr(2*k-1)-30,centr(2*k)-30,soli_string)%标注每个Solidity值 end

for k=1:numobjects plot(mexdata(k).ConvexHull(:,1),mexdata(k).ConvexHull(:,2),...'b','Linewidth',2)end

%画出1和2号物体的外接矩形

%>> rectangle('position',[9.5000 224.5000 62.0000 63.0000])%>> rectangle('position',[65.5000 141.5000 34.0000 39.0000])%画出每个物体的外接矩形 bb=[mexdata.BoundingBox];for k=1:numobjects rectangle('position',[bb(4*k-3)bb(4*k-2)bb(4*k-1)bb(4*k)])end

%>> figure,imshow(mexdata(1).Image)%只显示1号物体的图像

%>> figure,imshow(mexdata(1).ConvexImage)%画出1号物体的凸多边形 %>> figure,imshow(mexdata(2).Image)%只显示2号物体的图像

%>> figure,imshow(mexdata(2).ConvexImage)%画出2号物体的凸多边形 %画出单个物体的凸多边形的填充图形 for k=1:numobjects figure,imshow(mexdata(k).ConvexImage)end

%只显示Solidity>0.92的物体的图像 >> idx = find([mexdata.Solidity] > 0.92);>> BW2 = ismember(labeled,idx);>> figure,imshow(BW2)

>> mexdata=regionprops(labeled,'all');>> %只显示Solidity<0.92的物体的图像 idx = find([mexdata.Solidity] < 0.92);bw2 = ismember(labeled,idx);figure,imshow(bw2)%mexdata.Solidity;

>> numdown=find([mexdata.Solidity]<0.92);mexdata(numdown,:)=[];>> mexdata

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.19 %roipoly函数的用法 I = imread('eight.tif');c = [222 272 300 270 221 194];r = [21 21 75 121 121 75];BW = roipoly(I,c,r);imview(I), imview(BW)

%可以使用下面的方法创建相应的向量: regionprops(L,'Area');allArea = [stats.Area];

%创建一个只包含面积大于80的二值图像 idx = find([stats.Area] > 80);BW2 = ismember(L,idx);

%只显示某个下标所对应的物体图像 bw2=ismember(L,N);figure,imshow(bw2);

%在调用regionprops之前必须将二值图像转变为标注矩阵 L = bwlabel(BW);%或者

L = double(BW);

%将matlab数据写到excel中 a=ones(3);success = xlswrite('c:/matlab/work/myworkbook.xls',a,'A2:C4')%将行矩阵转换为列矩阵 a=[1 2 3 4 5 6];b=transpose(a);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.22球形物体的检测和标识(循环检测和标识算法)clc;clear;close all;%Step 1: Read image %Step 2: Threshold the image %Step 3: Remove the noise %Step 4: Find the boundaries %Step 5: Determine which objects are round >> RGB = imread('pillsetc.png');imshow(RGB)>> I = rgb2gray(RGB);threshold = graythresh(I);bw = im2bw(I,threshold);imshow(bw)>> % remove all object containing fewer than 30 pixels bw = bwareaopen(bw,30);>> figure,imshow(bw)>> % fill a gap in the pen's cap se = strel('disk',2);bw = imclose(bw,se);>> figure,imshow(bw)>> % fill any holes, so that regionprops can be used to estimate % the area enclosed by each of the boundaries bw = imfill(bw,'holes');>> figure,imshow(bw)>> [B,L] = bwboundaries(bw,'noholes');>> % Display the label matrix and draw each boundary figure,imshow(label2rgb(L, @jet, [.5.5.5]))>> hold on for k = 1:length(B)boundary = B{k};plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)end >> stats = regionprops(L,'Area','Centroid');>> stats = regionprops(L,'Area','Centroid');threshold = 0.94;% loop over the boundaries for k = 1:length(B)% obtain(X,Y)boundary coordinates corresponding to label 'k' boundary = B{k};% compute a simple estimate of the object's perimeter delta_sq = diff(boundary).^2;perimeter = sum(sqrt(sum(delta_sq,2)));

% obtain the area calculation corresponding to label 'k' area = stats(k).Area;

% compute the roundness metric metric = 4*pi*area/perimeter^2;

% display the results metric_string = sprintf('%2.2f',metric);% mark objects above the threshold with a black circle if metric > threshold centroid = stats(k).Centroid;plot(centroid(1),centroid(2),'ko');end

text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','y',...'FontSize',14,'FontWeight','bold');end >> title(['Metrics closer to 1 indicate that ',...'the object is approximately round']);

第三篇:《摄影与图像处理初步》课程小结

《摄影与图像处理初步》课程小结

《摄影与图像处理初步》

《摄影与图像处理初步》是针对工科高等院校本科各专业开设的一门素质培养与基本技能的提高课程,以启迪智慧、培养富于人格健全、品性高尚、具有艺术修养和审美情趣的、能够全面和谐发展的人为培养目标。通过该学科的学习,使同学们了解图像时代的文化意义并掌握基本的摄影与图像处理理论与实践技能,同时,通过对摄影艺术作品的鉴赏品鉴,以因领悟人类对美追求的智慧为契机而开拓自己的生命视野,理解个体人的价值意义,从而丰富自己的生活趣味。

课程内容分摄影与图像处理两部分,其中摄影注重鉴赏与基本的摄影理论、相机原理同技法方面知识的介绍,课堂采用图像展示、师生共同讨论、实景拍摄等丰富形式,重在对图像文化意义的欣赏与批评能力的提高;图像处理就如满赛哥同学所说的,作为对摄影作品精神的重塑和意境的整合改造,其重要性当在艺术趣味的驱使下进行。课程重在介绍最简单的三款图像与视频工具(Acdsee,Adobe Photoshop,会声会影)的原理与基本的工具用途。

摄影与图像之于教育

教育的至高境界理应是提升人的敏觉,使其锐利而深入,当所有的知识都为着开拓人的生命境界,使之丰富与灵动时,知识才是真正有用而可爱的。也只有这样,才能启动生命中潜藏的灵性与颖悟。对图像作为视觉的直接的识读是人与生俱来的认识与表达,你决不陌生只会哭喊与纯粹地吟笑的婴儿是怎样获得快乐与表达他(她)的愤怒的,他们又是怎样用涂鸦的方式来抒写大人们难以理解的诗意呢?表达的冲动与记录的渴望源于人心灵的深处,是潜藏着的,也是一个人与生俱来的对美的珍惜与爱恋,这是人活着的表征与自我尊严本源性的需要。事实上,视觉是人通向自然与世界奥秘最为便利、最为直接而廉价的窗口,视觉的魅悟最易牵动潜意识思维,其逻辑有时来得

极为缜密。

科技的发展足以为我们提供丰富的手段,数码时代铺天盖地的来势与更新换代,改变了人类识读与记录的传统方式,图像与影像已然方便地侵入我们的生活。美国学者阿尔温·托夫勒在他的成名作《第三次浪潮》中预言岿然成为现实。(随着社会的演进和科技的发展,人类将产生“文字文化文盲、计算机文化文盲和影像文化文盲”。)21世纪被称之为“读图时代”。图像的原生性特征便于记录更为真实的现实场景,使文化的叙事变得更精微,更动人更便捷。亲近图像,就是亲近我们自身的表达。

摄影的独到之处,除了构图、用光等图像本身积聚着的、人类视觉的基本经验,而其作为必要的硬件要求之外,观其艺术水平高低的,其最为精微之处许是摄影者独到的视角了,而这视角是其综合素质的亦然展现。摄影者对所摄对象的趣味来自心灵深处瞬间所生发的灵感,或者说是具有诗性的直觉倾向而激发的记录需要的冲动,这是个人内在的审美情节、价值指向、爱恨冲突„„等的综合释放。视觉作为工具性有其易疲劳与“懒惰”性,疲劳是其用之广、正因其广视觉才以最高的效率应对大脑所指使的关注对象,因时空的重复而麻木,也就造就了其“懒惰”,作为摄影者所培养的是一双艺术的视觉,不断使其超越工具的用途进而传达心灵与自然的交流所生发的动人之“境”,这也就是俗话说的要拍出“看不见”的景致。这“看不见”实非无视,而是能够激活麻木了的视觉惯性,使熟视无睹的东西焕发出其本来的生命力,恢复其灵性。发现的过程以丰富人作为“人”的荣誉与尊严而使人产生巨大的快感。

因之,摄影不单是一个时代里人们方便使用的工具性结果,更应据其无限的可能性而发现与表达自己、丰富自己,明证存在的欢欣。

如果你有足够的兴趣,就在摄影的名义下来与我们共历一次心灵的视像吧。

作品与作者

对于课程,我依据的原则是只将摄影与做图软件的原理作以讲解,让同学们学会在最短的时间里琢磨相机与软件能够被自己控制的可能性,同时将

历史名作、当代青年的创意作品与同学作品深入细致的分析与讨论,以提高视觉鉴赏力与对艺术作品的批评能力;在对于同学的创作作品,只是大体提出主题创作的方向,这样更易于使课堂具有开放性的特点,使同学们的创造力与创作效率得以开发与提高。根据同学的作品,可以说这样的目标与方法的行之有效。可以看作是一次对同学综合素质的测评,从创作作品中,可以从以下几个方面去去认识这些素质与能力。

首先,艺术气质与独具创意使我们相信因年轻所满溢的激情与丰富的想象力。请看李兆丹与张倩同学作品《如果我们哭泣,我们就会生锈》的创作说明:

我们想在作品中表现的是一个叛

逆的少年。

她被定义为一个少年。

她非常自我,不在乎世人的眼光。

她的行为异常成熟,但仍然是一个小

孩。她抽很烈的烟,她的生活是由许

多她不停的穿梭于其中的场景交织而

成的,她的记忆是有关于她或许多其

他的苍白情节。突然有一天她发现交

流让人失望,于是她不再与人交流。

她放纵自己,让许多东西变成了各种

疼痛,于是她终于麻木了。很多时候,她是冰冷的,却有着黑洞般深不可测的魔幻般的魅力。

她的形成隐藏着许多故事。她的绝望让她的眼泪干枯,她不再哭泣,因为她已经渐渐生锈,失去了所有感

知。

开始我们打算做的是朋克主题

主体的东西,后来又打算加以{LOLITA}的形象来完成作品,表现出一种叛逆

和绝望,为了表现人物更深层次的内心的纠结和刺入匕首般的痛,又加入了

点歌特的东西。总之,我们表现的是人物本身的个体性以及其更多内心的东

西。

毫无疑问,他们所透露的艺术气

质并不需要过多的剖析,忧伤而凄美。

在鲍远的作品《季节》、刘旭的《记忆的橱窗》里,透视出作者对时间意义的深刻洞察力与图像表达的驾驭能力,他的摄影技巧恰如其分地诠释了主题,作

品纯净而清醇;我们虽然不打算重复解

释那句“人人都是艺术家”的老掉牙的训示,但在同学们的作品中,我确实真

切地体会到这种艺术气质的热烈与真

诚。这种潜藏在每个人内心深处的潜能

只要在合适的土壤里,他就会展示其强大的生命力。这是促使我改变单纯的科类观念而进入尊重个人内心经验与探索无差别的、更为开放、更为丰富与更加人性的艺术教育的信心,这是起点也是方向。艺术气质总是隐含在同学们恰切的主题设计与娴熟的技术制作中,与鲍远一样,很多同学对季节的流徙有着深刻地敏感,尤其是绚丽的秋色似乎更能诱惑心灵,这是自然的时序以最为辉煌的的色彩献给生命的礼物,我们充满着朴素的感恩。杜秀的《盛夏光年——我的2007》、胡伟伟的《叶落秋痕》、钱惠增的《昌平公园》、赵超的《九寨》、宋健(地质)的《恋之风景·秋思》杨俊的《醉人深秋》、袁朝晖《绚烂的秋》等一大批同学的作品都在这样的境遇里统感了心物幽游的快乐;当然,大学生活以为最为切近的生活体验而成为很多同学的摄影主题,王玉萍与孙齐合作的《小蜜蜂和大黄蜂》、黄雯的《记忆》在更大的可能性上追求生活的私密世界里活跃着的童话情趣,作品生动而制作精良,陆骋和唐晓倩合作的《我们的宿舍》温馨而浪漫,吉妹的《茉莉花开》、范方超的《家乡·大学》、王聪《我的大学生活》、刘璐玮《那些生命中温暖而美好的事情》、肖露莎的《大学生活点滴》等等,倾向于这两个主题的同学占到百分之九十

多,这些作品因生活的细节精微、内容生动而感人;另一部分同学则对文化、文明等主题情有独钟,或者是对文化现象的宏观表达,或是对日新月异的城市变迁中渐失的记忆的追寻,亦或对新景象的敏感把握,如鲁阳的《798艺术工厂》、刑慧敏《古老的文明·人与自然》、段测的《古镇》、卜蔚达《我的摄影》等。很遗憾地,我不能一一例举每个同学的作品,上面只是为了分类的方便,粗略地以一些同学的作品举例。就如同学自己所说的,所感的,当你们被自己的创作作品所震惊所欢悦的时候,我依然能够幸运地和你们共享快乐,我如此真切地体味你们的创造力与掌握技能的高效。三个班一百多人的作品我反复地欣赏,每每有一种冲动,能够让这些作品与全校同学见面,让他们也能与我们共同体验创作的欢畅。如果这不是个人一厢情愿的矮情诉说,在现实的条件里,我准备先把作品拷贝到学校FTP资源库(http://.cn/ozhxh)共同探讨、共同学习,并请你下宝贵的意见。

第四篇:matlabGUI图像处理

图像处理

一、实习任务

利用MATLAB里面的一些特定函数和GUI可视化图形界面设计一个属于自己的photoshop,使其完成简易的放大、缩小、截图以及直方图统计等功能。

二、实习内容

1、布局设计

2、程序设计 %文件打开

[name,path]=uigetfile({'*.*';'*.bmp';'*.tif';'*.png';'*.gif';'*.jpg'},'载入图像');if isequal(name,0)|isequal(path,0)errordlg('没有选中文件','出错');return;else x=imread([path,name]);axes(handles.axes1);imshow(x);handles.img=x;handles.noise_img=x;guidata(hObject,handles)end

%文件保存

[filename,pathname] = uiputfile({'*.*';'*.bmp';'*.tif';'*.png';'*.gif';'*.jpg'},'图片保存为');if isequal([filename,pathname],[0,0])errordlg('没有保存','出错');return;else file=strcat(pathname,filename);(handles.axes2);i=getimage(gca);imwrite(i,file);end

%文件退出 clc;close all;close(gcf);

%灰度处理

axes(handles.axes2);if isrgb(handles.img)y=rgb2gray(handles.img);%RGB•••••••••• imshow(y);else msgbox('这已经是灰度图像','转换失败');end %截图

set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);y=imcrop(handles.img);imshow(y);handles.Timage=y;

%双线性缩小

axes(handles.axes2);prompt={'输入放大倍数:'};defans={'0.2'};p=inputdlg(prompt,'输入放大倍数',1,defans);p1=str2num(p{1});y=imresize(handles.img,p1,'bilinear');%法缩小 imshow(y);

%双线放大

axes(handles.axes2);prompt={'输入放大倍数:'};defans={'2'};p=inputdlg(prompt,'输入放大倍数',1,defans);p1=str2num(p{1});y=imresize(handles.img,p1,'bilinear');%值法放大 imshow(y);

%上下翻转

最近邻插值最近邻插axes(handles.axes2);x=(handles.img);if isrgb(handles.img)for k=1:3 y(:,:,k)=flipud(x(:,:,k));%上下翻转函数 end imshow(y);else x=(handles.img);y=flipud(x);imshow(y);end

%左右翻转

axes(handles.axes2);if isrgb(handles.img)x=(handles.img);for k=1:3 y(:,:,k)=fliplr(x(:,:,k));%左右翻转函数 end imshow(y);else x=(handles.img);y=fliplr(x);imshow(y);end

%左转90度

axes(handles.axes2);x=(handles.img);y=imrotate(x,90);imshow(y);

%右转90度

axes(handles.axes2);x=(handles.img);y=imrotate(x,-90);imshow(y);

%任意角度旋转 axes(handles.axes2);prompt={'输入参数1:'};defans={'30'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});y=imrotate(handles.img,p1);imshow(y);

%亮度处理

prompt={'输入参数1','输入参数2','输入gamma'};defans={'[0 0.7]','[0 1]','1'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});p2=str2num(p{2});p3=str2num(p{3});gamma=p3;x=(handles.img);y=imadjust(x,p1,p2,gamma);axes(handles.axes2);imshow(y);%G直方图

set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);if isrgb(handles.img)x=imhist(handles.img(:,:,2));%直方图统计 x1=x(1:10:256);horz=1:10:256;bar(horz,x1);set(handles.axes2,'xtick',0:50:255);else msgbox('这是灰度图像','旋转失败');end %R直方图

set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imhist(handles.img(:,:,1));%统计

x1=x(1:10:256);horz=1:10:256;bar(horz,x1);set(handles.axes2,'xtick',0:50:255);%B直方图

set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);if isrgb(handles.img)

直方图x=imhist(handles.img(:,:,3));%直方图统计

x1=x(1:10:256);horz=1:10:256;bar(horz,x1);%axis([0 255 0 150000]);set(handles.axes2,'xtick',0:50:255);%set(handles.axes2,'ytick',0:2000:15000);else msgbox('这是灰度图像','旋转失败');end

%直方图均衡

set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);if isrgb(handles.img)a=histeq(handles.img(:,:,1));b=histeq(handles.img(:,:,2));c=histeq(handles.img(:,:,3));k(:,:,1)=a;k(:,:,2)=b;k(:,:,3)=c;imshow(k);else h=histeq(handles.img);%直方图均衡 imshow(h);end

3、效果图

三、遇到的问题及解决方法

1、遇到的问题

最开始在Command里面用imread打开图片是可行的,但到了GUI里面之后,会出现一些错误,主要就是提示说:找不到对应的地方。还有就是在编写完程序之后,放大感觉没有任何变化。

2、解决方法

在查询资料后发现,在GUI里面打开图片是需要编写图片的地址以及格式的,要先判断你要操作的图片是否存在,如果不存在,应该提示你不存在的错误;在不能放大这个问题上,后来发现是axes2不够大,也就是画布不够大,再放大了画布后,放大就明显多了,缩小的时候也是这样。

四、主要收获和心得体会

在俩周的自动化软件实训里面,最大的感触就是MATLAB很强大,不但可以用自己自带的函数,还可以和C语言Java等语言连接共用,在处理图像上有自己独特的优势,在编辑菜单之后再进行相应的编程,做出来的界面和网页一样好看,这俩周特别快,不过收获很多,在很大程度上锻炼了我们的设计能力。

第五篇:图像处理 实验报告

摘要:

图像处理,用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本内容 图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。图像处理一般指数字图像处理。

数字图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。目前,图像处理演示系统应用领域广泛医学、军事、科研、商业等领域。因为数字图像处理技术易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。本图像处理演示系统以数字图像处理理论为基础,对某些常用功能进行界面化设计,便于初级用户的操作。设计要求

可视化界面,采用多幅不同形式图像验证系统的正确性;

合理选择不同形式图像,反应各功能模块的效果及验证系统的正确性 对图像进行灰度级映射,对比分析变换前后的直方图变化;

1.课题目的与要求 目的:

基本功能:彩色图像转灰度图像

图像的几何空间变换:平移,旋转,剪切,缩放 图像的算术处理:加、减、乘

图像的灰度拉伸方法(包含参数设置); 直方图的统计和绘制;直方图均衡化和规定化; 要求:

1、熟悉图像点运算、代数运算、几何运算的基本定 义和常见方法;

2、掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法

3、掌握在MATLAB中进行插值的方法

4、运用MATLAB语言进行图像的插值缩放和插值旋转等

5、学会运用图像的灰度拉伸方法

6、学会运用图像的直方图设计和绘制;以及均衡化和规定化

7、进一步熟悉了解MATLAB语言的应用,将数字图像处理更好的应用于实际

2.课题设计内容描述

1>彩色图像转化灰度图像:

大部分图像都是RGB格式。RGB是指红,绿,蓝三色。通常是每一色都是256个级。相当于过去摄影里提到了8级灰阶。

真彩色图像通常是就是指RGB。通常是三个8位,合起来是24位。不过每一个颜色并不一定是8位。比如有些显卡可以显示16位,或者是32位。所以就有16位真彩和32位真彩。

在一些特殊环境下需要将真彩色转换成灰度图像。1单独处理每一个颜色分量。

2.处理图像的“灰度“,有时候又称为“高度”。边缘加强,平滑,去噪,加锐度等。

3.当用黑白打印机打印照片时,通常也需要将彩色转成灰白,处理后再打印 4.摄影里,通过黑白照片体现“型体”与“线条”,“光线”。2>图像的几何空间变化:

图像平移是将图像进行上下左右的等比例变化,不改变图像的特征,只改变位置。

图像比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴按比例缩放fy倍,从而获得一幅新的图像。如果fx=fy,即在x轴方向和y轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果fx≠fy,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。

旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。3>图像的算术处理:

图像代数运算是指对两幅或两幅以上输入图像对应的像素逐个进行和差积商运算以产生增强效果的图像。图像运算是一种比较简单有效的增强处理手段是图像处理中常用方法。三种图像处理代数运算的数学表达式如下: C(x,y)=A(x,y)+B(x,y)C(x,y)=A(x,y)-B(x,y)C(x,y)=A(x,y)*B(x,y)4>图像的灰度拉伸方法:

灰度拉伸又叫对比度拉伸,它是最基本的一种灰度变换,使用的是最简单的分段线性变换函数,它的主要思想是提高图像处理时灰度级的动态范围。可以有选择的拉伸某段灰度区间以改善输出图像。如图,所示的变换函数的运算结果是将原图在a到b之间的灰度拉伸到c到d之间。如果一幅图像的灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。

5>直方图设计和绘制;以及均衡化和规定化:

灰度直方图是将数字图像的所有像素,按照灰度值的大小,统计其所出现的频度。通常,灰度直方图的横坐标表示灰度值,纵坐标为半个像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。

直方图均衡方法的基本原理是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。从而达到清晰图像的目的。

3.总体方案设计

1> GUI图像处理平台的总体设计

图像处理平台设计的目的是能够将图像处理的各个独立算法集成到一个平台内,方便用户选用多种方法对图像进行处理.平台基于MatlabGUI设计,实现图像处理过程的交互和可视化,并为用户二次开发提供平台接口,提高图像处理算法的综合利用效率

2>平台总体功能设计 根据一体化的设计思想,平台主要实现算法集成、交互可视化和提供二次开发接口等功能.其中算法集成分为已有算法集成和新算法集成.具体功能描述如下:

(1)已有算法集成是对Matlab图像处理工具

包中提供的算法进行集成,可以通过使用函数名加参数的方式直接调用.依据功能进行分类,将同类算法集成到同一菜单项内,如将傅里叶变换、小波变换、离散变换等算法归类到图像变换中,进行集成.(2)新算法集成是指对自主开发的算法进行集成,如改进水平集算法[12]、交互式图割算法[13]、细胞自动机分割算法[14]等均为自主开发的图像分割算法,同已有算法集成方式类似,集成到平台中,便于综合运用和算法分析与对比.(3)交互式可视化是指对图像处理过程及结果的可视化显示,并提供用户交互区.(4)二次开发接口是指通过调用集成模板方式,为用户提供一个将自己算法集成到平台中的一个接口

3>总体布局设计

一个高性能的图像处理平台应该为用户提供

方便快捷的操作.平台设计中通过菜单和按钮实现快捷操作,其中菜单项提供平台的整体功能,快捷按钮显示具体的独立功能.图像处理平台的布局设计如图1所示.利用MatlabGUI提供的工具包和底层代码,可以实现菜单功能区、快捷按钮功能区、DEMO显示区、可视化效果显示区和用户交互区的布局设计

4.程序实现和测试

4.1各个功能模块的主要实现程序 基本功能:彩色图像转灰度图像

I=imread('C:MATLAB7toolboximagesimdemospeppers.png','png');x=rgb2gray(I);figure(1);subplot(121);imshow(I);title('原始图像');subplot(122);imshow(x);title('灰度图像');实验结果:

图像的几何空间变换:平移,旋转,剪切,缩放

img1=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao3.jpg','jpg');img1=rgb2gray(img1);figure,imshow(img1);imwrite(img1,'a1.jpg');%%%%%%平移

se=translate(strel(1),[20 20]);img2=imdilate(img1,se);figure,imshow(img2);imwrite(img2,'a2.jpg');%%%%%%旋转 img3=imrotate(img1,90);figure,imshow(img3);imwrite(img3,'a3.jpg');% %%%%%缩放 img4=imresize(img1,2);figure,imshow(img4);imwrite(img4,'a4.jpg');

原始图像:

平移图像:

旋转图像:

缩放图像:

图像的算术处理:加、减、乘

加法

A=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao3.jpg','jpg');B=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao1.jpg','jpg');subplot(1,3,1);imshow(A);title('图像1');subplot(1,3,2);imshow(B);title('图像2');C=imadd(A,B);subplot(1,3,3);imshow(C);title('相加后的图像')

减法

A=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao3.jpg','jpg');B=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao1.jpg','jpg');subplot(2,3,1);imshow(A);title('图像1');subplot(2,3,2);imshow(B);title('图像2');C=imsubtract(A,B);subplot(2,3,3);imshow(C);title('相减后的图像')

乘法

A=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao3.jpg','jpg');B=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao1.jpg','jpg');subplot(1,3,1);imshow(A);title('图像1');subplot(1,3,2);imshow(B);title('图像2');C=immultiply(A,B);subplot(1,3,3);imshow(C);title('相乘后的图像')

图像的灰度拉伸方法(包含参数设置);

img=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao3.jpg','jpg');figure(1);imshow(img);title('原图');[m,n]=size(img);%测量图像尺寸参数

GreyHist=zeros(1,256);%预创建存放灰度出现概率的向量 for k=0:255 GreyHist(k+1)=length(find(img==k))/(m*n);%计算每级灰度出现的概率,将其存入GreyHist中相应位置

end figure(2);bar(0:255,GreyHist)%绘制直方图 title('原直方图')xlabel('灰度值')ylabel('出现概率')%灰度拉伸 imggrey=img;prompt={'请输入系数a','请输入系数b'};words='请输入线性拉伸函数:';answer = inputdlg(prompt,words,1,{'0.5','2'});a=str2double(answer(1));b=str2double(answer(2));for i=1:m for j=1:n img(i,j)=a*img(i,j)+b;end end figure(3);imshow(img);title('灰度拉伸');GreyHist=zeros(1,256);%预创建存放灰度出现概率的向量 for k=0:255

直方图的统计和绘制;直方图均衡化和规定化;

%一,图像的预处理,读入彩色图像将其灰度化

img=imread('C:MATLAB7toolboximagesimdemosguidemo123jujiao3.jpg','jpg');%读入JPG彩色图像文件

imshow(img)%显示出来 title('输入的彩色JPG图像')imwrite(rgb2gray(img),'PicSampleGray.jpg');%将彩色图片灰度化并保存 img=rgb2gray(img);%灰度化后的数据存入数组 %二,绘制直方图

[m,n]=size(img);%测量图像尺寸参数

GP=zeros(1,256);%预创建存放灰度出现概率的向量 for k=0:255 GP(k+1)=length(find(img==k))/(m*n);%计算每级灰度出现的概率,将其存入GP中相应位置 end figure,bar(0:255,GP,'g')%绘制直方图 title('原图像直方图')xlabel('灰度值')ylabel('出现概率')%三,直方图均衡化 S1=zeros(1,256);for i=1:256 for j=1:i S1(i)=GP(j)+S1(i);%计算Sk end end S2=round((S1*256)+0.5);%将Sk归到相近级的灰度 for i=1:256 GPeq(i)=sum(GP(find(S2==i)));%计算现有每个灰度级出现的概率 end figure,bar(0:255,GPeq,'b')%显示均衡化后的直方图 title('均衡化后的直方图')xlabel('灰度值')ylabel('出现概率')%四,图像均衡化 PA=img;for i=0:255 PA(find(img==i))=S2(i+1);%将各个像素归一化后的灰度值赋给这个像素 end figure,imshow(PA)%显示均衡化后的图像 title('均衡化后图像')imwrite(PA,'PicEqual.jpg');

4.3.问题说明和总结:对在调试中发现的问题和解决方法做说明。

图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。

进行程序调试的过程中,最重要的是输入图像,刚开始是为了找到原始图像耗费了很多时间,一般的条件书上有,但要对其进行磨合。程序编写时,应该注意大小写。应该注意最后的输出部分,保证输出条件与输入条件相同。

5.总结与体会 这次使用MATALB进行图像处理的编写,是我对MATALB软件有了更深入的了解,对其的应用能力也有了相应的提高,更深入的了解到MATALB作为绘图软件的方便与快捷。在进行程序调试的过程中,最重要的是输入图像,只有找到图像的原始位置,才能进行下面的程序编码。编码程序时,应该在MATLAB原始文档的位置先行输入,输入时应该注意大小写。程序应该尽可能地简单,只要能达到目的就行,程序越复杂,运行时的错误就越多。以上是我的程序编码经验与感受。

6.参考文献

《数字图像处理实验指导书》 厍向阳 曹颖超 编著 《MATLAB与数学实验》 艾冬梅 李艳晴 编著 《图像处理和分析技术》 章毓晋 编著 《MATLAB实用教程》 郑阿奇 编著

下载图像处理实验教学小结word格式文档
下载图像处理实验教学小结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    图像处理说课稿

    图像处理 一、教材分析和教学地位分析 本节课是浙江教育出版社必修教材中第三章第三节第一课时的内容,主要介绍了图像处理的基本概念:分辨率、位图和矢量图、颜色、文件格式,以......

    图像处理教学大纲

    《医学数字图像处理》课程教学大纲 课程编号: 课程名称:医学数字图像处理 英文名称:Medical Digital Image Processing 课程类型:专业课 总学时:54 (理论学时:27 实验学时:27) 适用......

    实验教学小结

    生物实验教学小结 生物学是一门实验科学,观察和实验是学习生物科学的基本方法,努力创造条件,结合学生心理、生理特点,克服困难,完成大纲、教材规定的课堂实验教学,培养学生的......

    实验教学小结

    生物实验教学小结 生物学是一门实验科学,观察和实验是学习生物科学的基本方法,努力创造条件,结合学生心理、生理特点,克服困难,完成大纲、教材规定的课堂实验教学,培养学生的......

    遥感图像处理实验报告

    遥感图像处理实验报告 班级 11资环 姓名 学号 实验专题 实验室 F楼机房 成绩评定 教师签字专题一:DEM图像进行彩色制图·························......

    Photoshop图像处理教案

    Photoshop图像处理导学 本课程主要内容包括:Photoshop CS2的基本操作和基本概念、窗口操作和图像显示效果控制、绘图前的设置、选区的创建、绘图和编辑工具的使用、图像的编......

    《计算机图像处理》教学大纲

    《计算机图象处理》教学大纲 说 明 一、 课程的性质和任务 该课程是本院电子商务专业的一门专业课。Photoshop图象处理是目前电脑图形图象处理软件中功能最强大的软件之一,是......

    生物实验教学小结

    生物实验教学小结 生物是一门以实验为基础的学科,开展好实验教学是学好生物的前提条件。生物实验具备培养学生观察和动手能力的功能,更有培养学生动脑、启迪思维、开发潜能的......