matlab期末数字图像处理小工具

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

功能模块

1.图像选择

1.1 算法实现

1.2实验结果

2.图像清除与退出

2.1算法设计

3 亮度调节、旋转、翻转

3.1 算法原理

3.2 算法设计

3.3 实验结果

4图像灰度化

4.1 算法原理

4.2 算法设计

4.3 实验结果

​编辑

5灰度图像二值化

5.1 算法原理

5.2 算法设计

5.3 实验结果

​编辑

6指数变换 对数变换

6.1 算法原理

6.2 算法设计

4.3 实验结果

​编辑

7反色

7.1 算法原理

7.2 算法设计

7.3 实验结果

8图像叠加、轨迹检测(相减)

8.1 算法原理

8.2 算法设计

8.3 实验结果

9添加噪声和滤波器

9.1 算法原理

9.2 算法设计

9.3 实验结果

10频域处理 边缘提取

10.1 算法原理

10.2 算法设计

10.3 实验结果

11膨胀运算 腐蚀运算 开运算 闭运算

11.1 算法原理

11.2 算法设计

11.3 实验结果

12边缘提取

12.1 算法原理

12.2 算法设计

12.3 实验结果

13图像模糊与复原

13.1 算法原理

13.2 算法设计

13.3 实验结果

14硬币检测计数

14.1 算法原理

14.2 算法设计

14.3 实验结果

15提取目标图像

15.1 算法原理

15.2 算法设计

15.3 实验结果

16形状检测

16.1 算法原理

16.2 算法设计

16.3 实验结果

总结


前言

    本次制作了一个图像处理小工具,可以对图像进行如亮度调节、旋转、左右上下翻转等基础变换。进行灰度变换并显示其直方图、反色、二值化、图像合成、运动轨迹检测。可对图像添加噪声、滤波器、边缘提取并进行对比。选择不同的结构元素进行开运算、闭运算、膨胀运算、腐蚀运算。实现了对图中硬币的检测计数、提取红色目标图像和形状检测。


功能模块

1.图像选择

1.1 算法实现

[filename,pathname]=uigetfile({'*.jpg;*.png;*.jpeg;*.tif'},'选择一张图片'
);
image=[pathname filename];%获取文件路径文件名
if (filename==0)
    warndlg('请选择一张图片!','Warning');%提示选择图片
    return;
else
    im = imread(image);  %读取图片数据到矩阵im
    axes(handles.axes1);
    imshow(im);%显示
    
   handles.filename=filename;
   handles.image=image;%文件名字和图片信息保存到结构体
end
 guidata(hObject,handles);%更新结构体

1.2实验结果

matlab期末数字图像处理小工具_第1张图片

 matlab期末数字图像处理小工具_第2张图片

2.图像清除与退出

2.1算法设计

cla(handles.axes2,'reset');
cla(handles.axes5,'reset');
cla(handles.axes6,'reset');
cla(handles.axes7,'reset');
cla(handles.axes9,'reset');

close all;

3 亮度调节、旋转、翻转

3.1 算法原理

定义全局变量x获取滑动条数值,用imadd(img,x)调节图像亮度;imrotate(img,x)实现旋转;flipud(image)fliplr(img)实现图像上下左右翻转。

3.2 算法设计

global x;
x=get(hObject,'value');%获取滑动条值
% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider
img=imread(handles.image);
imageout=imadd(img,x);
axes(handles.axes2);
imshow(imageout);
img=imread(handles.image);
img=imrotate(img,x);%img逆时针方向旋转x度
axes(handles.axes2); 
imshow(img);
img=imread(handles.image);
img=fliplr(img);
axes(handles.axes2); 
imshow(img);

image=imread(handles.image);
image=flipud(image);
axes(handles.axes2); 
imshow(image);

3.3 实验结果

matlab期末数字图像处理小工具_第3张图片

matlab期末数字图像处理小工具_第4张图片

matlab期末数字图像处理小工具_第5张图片

matlab期末数字图像处理小工具_第6张图片

4图像灰度化

4.1 算法原理

通过rgb2gray 函数消除图像色调和饱和度信息同时保留亮度实现将将RGB图像或彩色图转换为灰度图像

4.2 算法设计

image=imread(handles.image);
image=rgb2gray(image);%转化为灰度图
axes(handles.axes2);cla;
imshow(image);
colormap(handles.axes2,gray(256));%修改画布映射 

4.3 实验结果

matlab期末数字图像处理小工具_第7张图片

5灰度图像二值化

5.1 算法原理

设定一个阈值,当原始图像像素的数值大于这个阈值的时候,就把这个像素颜色分量为255,如果数值小于这个阈值,就把这个像素颜色分量为0

5.2 算法设计

handles.image=imread(handles.image);
handles.image=rgb2gray(handles.image);%转化为灰度图
handles.image=imbinarize(handles.image,0.5);%转化为二值图 
axes(handles.axes2);
imshow(handles.image);

5.3 实验结果

matlab期末数字图像处理小工具_第8张图片

6指数变换 对数变换

6.1 算法原理

指数变换:指数大于1变暗,小于1变亮。增大高低灰度区对比度。

对数变换:因为对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小所以图像经过对数变换后高灰度值部分对比提升,有增强图像效果。

6.2 算法设计

img=imread(handles.image);
im=rgb2gray(img);%转化为灰度图
im1=histeq(img);%对原图进行直方图均衡化处理
axes(handles.axes5);
imhist(im1);
imgoutput=1.5.^(im*0.1)-1;%指数变换 高灰度区拉伸
axes(handles.axes2);
imshow(imgoutput,[]);
axes(handles.axes6);%预览图直方图
imhist(imgoutput);
img=imread(handles.image);
imgoutput=rgb2gray(img);%转化为灰度图
im1=histeq(img);%对原图进行直方图均衡化处理
axes(handles.axes5);
imhist(im1);
 
v=5;%v越大灰度提高越明显
m=mat2gray(double(imgoutput)); 
%灰度归一化 mat2gray把任意任意类型图像矩阵转换为取值范围为[0,1]的归一化double类数组。
imgoutput=log(1+v*m)/(log(v+1));%对数变换
axes(handles.axes2);
imshow(imgoutput,[]);
axes(handles.axes6);%预览图直方图
imhist(imgoutput);

4.3 实验结果

matlab期末数字图像处理小工具_第9张图片

 matlab期末数字图像处理小工具_第10张图片

7反色

7.1 算法原理

Imcomplement()函数对图像求补。

7.2 算法设计

im=imread(handles.image);
im=imcomplement(im);%图像求补
axes(handles.axes2);
imshow(im);

7.3 实验结果

matlab期末数字图像处理小工具_第11张图片

8图像叠加、轨迹检测(相减)

8.1 算法原理

先选择并显示一张图片,再通过pushbutton控件选择第二张目标图片通过imadd函数进行图像加法运算,将两张大小相同的图像叠加。

imsubtract进行图像减法运算,将一幅图像从另一幅输入图像中减去或从一幅图像中减去显示差值,来检测运动轨迹。

8.2 算法设计

[filename2,pathname2]=uigetfile({'*.jpg;*.png;*.jpeg;*.tif'},'Select an image');
image2=[pathname2 filename2];
im2 = imread(image2); 
im1=imread(handles.image);
im1=imresize(im1,[200,200]);
im2=imresize(im2,[200,200]);
 
imgoutput=imadd(im1*0.5,im2);%改变im1透明度
axes(handles.axes2);
imshow(imgoutput,[]);
[filename2,pathname2]=uigetfile({'*.jpg;*.png;*.jpeg;*.tif'},'Select an image');
image2=[pathname2 filename2];%选择要检测的另一张图片
im2 = imread(image2); 
im1=imread(handles.image);
img=imsubtract(im1,im2);
axes(handles.axes2);
imshow(img);

8.3 实验结果

matlab期末数字图像处理小工具_第12张图片

matlab期末数字图像处理小工具_第13张图片matlab期末数字图像处理小工具_第14张图片

matlab期末数字图像处理小工具_第15张图片

9添加噪声和滤波器

9.1 算法原理

高斯噪声:噪声的概率密度函数服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少。

椒盐噪声:随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素

均值滤波器:在图像上对目标像素给一个模板,该模板包括了其周围的临近像素,再用模板中的全体像素的平均值来代替原来像素值。

中值滤波器:把图像中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值。

高斯滤波器:对整幅图像进行加权平均,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。用模板扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值

9.2 算法设计

%高斯噪声
set(handles.text10,'Visible','on');
img=imread(handles.image);
img=imnoise(img,'gauss',0.02);%方差为 0.02的零均值高斯白噪声添加到灰度图像
axes(handles.axes7); 
cla; 
imshow(img);
%椒盐噪声:
set(handles.text10,'Visible','on');
img=imread(handles.image);
img=imnoise(img,'salt & pepper',0.2); %添加椒盐噪声
axes(handles.axes7); 
cla; 
imshow(img);
%均值滤波器:
set(handles.text12,'Visible','on');
img=imread(handles.image);
img=rgb2gray(img);%转化为灰度图
img=imnoise(img,'gauss',0.02);
im=filter2(fspecial('average',5),img)/255;
%生成5*5均值模板并进行滤波
%进行5×5均值滤波 经过了运算的图像矩阵I其数据类型会从unit8型变成double型 将图像矩阵转化到0-1之间 
axes(handles.axes9); 
cla; 
imshow(im,[]);

%中值滤波器;
set(handles.text12,'Visible','on');
img=imread(handles.image);
img=imnoise(img,'salt & pepper',0.2); %添加椒盐噪声
img=rgb2gray(img);%转化为灰度图
img=medfilt2(img,[5 5]);%进行5×5中值滤波
axes(handles.axes9); 
cla; 
imshow(img);

%高斯滤波器;
set(handles.text12,'Visible','on');
img=imread(handles.image);
img=imnoise(img,'gauss',0.02);
img=rgb2gray(img);%转化为灰度图
SE=fspecial('gaussian',[5 5]); %[ 5 5 ]模板尺寸
img=imfilter(img,SE,'replicate');
axes(handles.axes9); 
cla; 
imshow(img);

9.3 实验结果

高斯噪声用均值滤波、高斯噪波的线性滤波效果更好。椒盐噪声用中值滤波效果更好。

matlab期末数字图像处理小工具_第16张图片

高斯噪声 均值滤波

matlab期末数字图像处理小工具_第17张图片 椒盐噪声 中值滤波

matlab期末数字图像处理小工具_第18张图片 高斯噪声 高斯滤波

10频域处理 边缘提取

10.1 算法原理

先用巴特沃斯低通对图像做平滑处理,再用拉普拉斯算子增强图像中灰度突变处的对比度,使图像中的细节部分得到增强

10.2 算法设计

I=imread(handles.image);
I=im2double(I);
M=2*size(I,1);  %滤波器行数 读入图像宽度的2倍 为了方便下方巴特沃斯滤波器的构造
N=2*size(I,2);  %滤波器列数
u=-M/2:(M/2-1);
v=-N/2:(N/2-1);
[U,V]=meshgrid(u,v);%三维矩阵
D=sqrt(U.^2+V.^2);
D0=80;                %截止频率/半径
n=6;
H=1./(1+(D./D0).^(2*n));  %构造巴特沃斯滤波器
%D0表示通带的半径,n表示的是巴特沃斯滤波器的次数
%随着次数的增加,振铃现象会越来越明显
J=fftshift(fft2(I,size(H,1),size(H,2)));  %转换到频域
K=J.*H;
L=ifft2(ifftshift(K));  %傅立叶逆变换
 
%要进行频域内的滤波器处理 首先要进行傅里叶变换
%然后滤波处理 最后再用反傅里叶变换倒回到空间域内
img=L(1:size(I,1),1:size(I,2));  %改变图像大小
axes(handles.axes7);
cla;
imshow(img);
%边界提取/
im=mat2gray(I);%实现图像的矩阵归一化
[m,n]=size(im);
im2=im;
LaplacianNum=0;%经Laplacian操作得到的每个像素的值
LaplacianThreshold=0.2;%设定阈值
for j=2:m-1 %进行边界提取
    for k=2:n-1
       LaplacianNum=abs(4*im(j,k)-im(j-1,k)-im(j+1,k)-im(j,k+1)-im(j,k-1));
        if(LaplacianNum>LaplacianThreshold)
            im2(j,k)=255;
        else
            im2(j,k)=0;
        end
    end
end

10.3 实验结果

matlab期末数字图像处理小工具_第19张图片

11膨胀运算 腐蚀运算 开运算 闭运算

11.1 算法原理

用到了弹出式菜单控件,定义变量获取行数,选择想要的结构元素进行运算。

膨胀运算 将与物体接触的所有背景点合并到该物体中,使边界向外部扩张可以用来填补物体中的空洞。用结构元素扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结果图像的该像素为0否则为1

腐蚀运算 消除边界点,使边界向内部收缩。可以用来消除微小无意义的物体。用结构元素扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结果图像的该像素为1否则为0。

开运算 先腐蚀后膨胀的过程称为开运算。可去除白色噪点。

闭运算 先膨胀后腐蚀的过程称为比运算。可去除黑色噪点。

11.2 算法设计

global x;
x=get(handles.popupmenu2,'Value');
%膨胀
img=imread(handles.image);
img=rgb2gray(img);%将彩色图像转化为灰度图
img=im2bw(img,0.5);%将灰度图转化为二值图
switch x
    case 1
        SE1=strel('square',3);% 构造方形结构元素
        img=imdilate(img,SE1);%用方形结构元素膨胀运算
    case 2
        SE2=strel('diamond',2);% 构造菱形结构元素
        img=imdilate(img,SE2);%用菱形结构元素膨胀运算
    case 3
        SE3=strel('periodicline',2,[1 -2]);% 构造周期出现的结构元素
        img=imdilate(img,SE3);%用周期出现的结构元素膨胀运算
end
axes(handles.axes2);
imshow(img);

%腐蚀运算 
global y;
y=get(handles.popupmenu3,'Value');
img=imread(handles.image);
img=rgb2gray(img);%将彩色图像转化为灰度图
img=im2bw(img,0.5);%将灰度图转化为二值图
switch y
    case 1
        SE1=strel('square',3);% 构造方形结构元素
        img=imerode(img,SE1);%用方形结构元素 腐蚀运算
    case 2
        SE2=strel('diamond',2);% 构造菱形结构元素
        img=imerode(img,SE2);%用菱形结构元素 腐蚀运算
    case 3
        SE3=strel('periodicline',2,[1 -2]);% 构造周期出现的结构元素
        img=imerode(img,SE3);%用周期出现的结构元素 腐蚀运算
end
axes(handles.axes2);
imshow(img);


%开运算 
global m;
m=get(handles.popupmenu4,'Value');
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu4 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu4
img=imread(handles.image);
img=rgb2gray(img);%将彩色图像转化为灰度图
img=im2bw(img,0.5);%将灰度图转化为二值图
switch m
    case 1
        SE1=strel('square',3);% 构造方形结构元素
       img=imopen(img,SE1);%用方形结构元素开运算后的图像
    case 2
        SE2=strel('diamond',2);% 构造菱形结构元素
       img=imopen(img,SE2);%用菱形结构元素开运算后的图像
    case 3
        SE3=strel('periodicline',2,[1 -2]);% 构造周期出现的结构元素
      img=imopen(img,SE3);%用周期出现的结构元素开运算后的图像
end
axes(handles.axes2);
imshow(img);

%闭运算
global n;
n=get(handles.popupmenu5,'Value');
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu5 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu5
img=imread(handles.image);
img=rgb2gray(img);%将彩色图像转化为灰度图
img=im2bw(img,0.5);%将灰度图转化为二值图
switch n
    case 1
        SE1=strel('square',3);% 构造方形结构元素
       img=imclose(img,SE1);%用方形结构元素闭运算后的图像
    case 2
       SE2=strel('octagon',3);%构造八角形结构元素
       img=imclose(img,SE2);%用八角结构元素闭运算后的图像
    case 3
        SE3=strel('periodicline',2,[1 -2]);% 构造周期出现的结构元素
      img=imclose(img,SE3);%用周期出现的结构元素闭运算后的图像
end
axes(handles.axes2);
imshow(img);

11.3 实验结果

1.腐蚀运算能够将结构元素的子集腐蚀掉,消除边界点,使边界向内部收缩

2.膨胀元素能够将原图像像素面积扩大,方形结构和周期出现的结构元素膨胀效果都很好。腐蚀和膨胀都是对图像的白色高亮部分而言。

3.开运算是先腐蚀后膨胀,一般能平滑图像的轮廓,削弱狭窄部分,去掉细长的突出,边缘毛刺和鼓励斑点。

4.闭运算是先膨胀后腐蚀,用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。

matlab期末数字图像处理小工具_第20张图片

matlab期末数字图像处理小工具_第21张图片这里仅展示方形结构元素膨胀运算 

12边缘提取

12.1 算法原理

Roberts是利用局部差分算子寻找边缘的算子 用对角线方向相邻两象素之差近似梯度幅值检测边缘。

LoG 在进行拉普拉斯操作之前先对图像进行平滑滤波处理算子的高斯部分会模糊图像,高斯函数在空间和频率两个域平滑图像。拉普拉斯有各向同性,对任何模板方向的灰度变化有相等的响应,

12.2 算法设计

%Roberts
image=imread(handles.image);
image = rgb2gray(image); %将图片转换成灰度图像 
TempImage1= edge( image ,'roberts'); %image为将要进行边缘检测目标图像 所使用的方法是 Roberts 算子 而阈值则是由系统自适应生成的 
axes(handles.axes2); 
imshow(TempImage1);
%LoG
image=imread(handles.image);
image= im2double(rgb2gray(image));
img=edge(image,'log',[],1.6);%采用log算子提取边缘 指定标准差的值
img= imfill(img,'holes');
axes(handles.axes2);
imshow(img);

12.3 实验结果

Robert边缘定位精度较高,检测垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感,但没有平滑处理无法抑制噪声的影响。

Log抗噪声能力较强,但一些尖锐的边缘无法检测到

matlab期末数字图像处理小工具_第22张图片

Robert

 matlab期末数字图像处理小工具_第23张图片

     LoG

13图像模糊与复原

13.1 算法原理

设置滑动条控件可调节运动位移像素大小。对图像先进行运动模糊再用维纳滤波复原。将退化后的图像从空间域变换到频域,进行逆滤波后在变换到空间域上从而实现图像的复原

13.2 算法设计

a=get(handles.slider6,'Value');%获取滑动条值
set(handles.text17,'Visible','on');%显示坐标区名称
set(handles.text21,'Visible','on');
img=imread(handles.image);
PSF=fspecial ('motion',a,5);%运动模糊函数,运动位移是a像素,角度是5
Blurred=imfilter(img,PSF, 'conv' , 'circular') ;%对图像运动模糊处理
img=deconvwnr (Blurred,PSF);%不带nsr的维纳滤波复原 相当于逆滤波
axes(handles.axes7);
imshow(Blurred,[]); 
axes(handles.axes9);
imshow(img,[]);
handles.imageoutput=Blurred;

13.3 实验结果

matlab期末数字图像处理小工具_第24张图片

matlab期末数字图像处理小工具_第25张图片

14硬币检测计数

14.1 算法原理

先转化为二值图像,再先闭运算填充物体内细小空洞后用开运算平滑物体的边界找二值图像中的连通区域。对于不同的符合条件的连通区分别用不同的标号加以区别,结果保存在L矩阵里,num里就保存图像中按4连通寻找区域的总数。bwlabel返回一个和img大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签。

14.2 算法设计

img=imread(handles.image);
BW=im2bw(img);
SE=strel('square',6);%方形结构元素
img=imopen(imclose(BW,SE),SE); %先闭后开
axes(handles.axes2);
imshow(img);
[L, NUM] = bwlabel(img, 4)
%找二值图像中的连通区域 对于不同的符合条件的连通区域(4连通 8连通)
%分别用不同的标号加以区别 结果保存在L矩阵里 num里就保存输入图像中连通区域的总数
%返回一个和img大小相同的L矩阵 包含了标记了BW中每个连通区域的类别标签
 
S=sprintf('检测到的硬币个数为:%d',NUM);msgbox(S);%弹窗显示运行结果

14.3 实验结果

matlab期末数字图像处理小工具_第26张图片

 参考:https://blog.csdn.net/u014655960/article/details/127645119?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127645119%22%2C%22source%22%3A%22u014655960%22%7D

15提取目标图像

15.1 算法原理

根据hsv分类模型,提取图中红色物体,再复制到一个创建好的白色图像中。最后转化到RGB空间。

15.2 算法设计

img=imread(handles.image);
h= rgb2hsv(img);
[m,n,d]=size(img); %计算图像像素
%提取红色部分
img2 = 255*ones(size(img));         % 创建一个白色图像 将目标颜色提取到此处
h2 = rgb2hsv(img2);             % 将白色图像也转换至hsv色彩空间
[row, col] = ind2sub( size(h),...      % 找出图像中红色像素 300°品红
    find( h(:,:,1)>(270/360) & h(:,:,1)< (360/360)...
    & h(:,:,2)>0.3& h(:,:,3)>0) );
for i = 1 : length(row)                     % 将图像中的红色像素复制到刚才新建的白色图像中
    h2(row(i),col(i),:) = h(row(i),col(i),:);
end
img2= hsv2rgb(h2);     % 将提取出来的红色转化至rgb空间
axes(handles.axes2);
imshow(img2);

参考:https://blog.csdn.net/weixin_36815313/article/details/109727719

15.3 实验结果

matlab期末数字图像处理小工具_第27张图片

16形状检测

16.1 算法原理

先转化为二值图像,再用bwboundaries获取二值图像轮廓。过程中发现二值化后背景噪点较多,用bwareaopen去除。计算轮廓周长面积,再根据阈值匹配。

16.2 算法设计

I = rgb2gray(image);
bw = im2bw(I,0.69);% 读取图像并转化为二值图像
axes(handles.axes2);
imshow(bw);%背景噪点多

[m,n] = size(bw);
 
for i = 1:m
    for j = 1:n
        bw(i,j) = ~bw(i,j);
    end
end
%取反
 
bw = bwareaopen(bw,30);%去除小目标
se = strel('disk',8);% 圆形结构元素
bw = imclose(bw,se);% 闭运算
bw = imfill(bw,'holes');% 填充洞
axes(handles.axes7);
imshow(bw);
 
[B,L] = bwboundaries(bw,'noholes');%获取二值图像轮廓
axes(handles.axes9);
imshow(L);
hold on;
 
 
stats = regionprops(L,'Area','Centroid');% 确定圆形目标
%regionprops 图像各个区域中像素总个数 每个区域的质心被计算
threshold = 0.85;% 面积
for k = 1:length(B)
    boundary = B{k};
    delta_sq = diff(boundary).^2;
    perimeter = sum(sqrt(sum(delta_sq,2))); % 求周长     
    area = stats(k).Area;   % 求面积 
    metric = 4*pi*area/perimeter^2;
    % 根据阈值匹配
    if metric > threshold  
       centroid = stats(k).Centroid;
       plot(centroid(1),centroid(2),'ko');
       text(centroid(1)-2,centroid(2)-2, '圆形','Color',...
        'k','FontSize',10,'FontWeight','bold','color','red');
    end
End

参考:https://blog.csdn.net/YueYingGuang/article/details/96428857

16.3 实验结果

matlab期末数字图像处理小工具_第28张图片


总结

    在完成图像提取的功能时,第一次尝试运用HSV提取目标颜色图像。提取整体颜色差别不大的物体效果较好,但是对于较多部分有阴影、色差较大的物体不太实用。在亮度和图像模糊等功能的时候使用了滑动条控件,可以自由变换得到理想的图像。

    这次大作业要求将很多功能整合到一个图像处理小应用中,实现单个功能到让功能在同一个应用中实现并相互配合,对我来说是一次完全不一样的挑战。同时也让我意识到平时所学的算法、功能最终也是要应用到生活中实践的。

    在实现功能的过程中,我也学会了比较分析哪种方法效果好、哪种方法更合适、遇到问题多搜索解决办法并实践找到最优解。同时加强了我都灵活应用能力,例如在案例中看到了getframe可以捕获当前坐标区作为影片帧的方法,我在添加噪声和滤波器的的功能中也做了尝试。这些都是我在本次大作业中的收获。

你可能感兴趣的:(matlab,图像处理)