数字图像处理之matlab大作业:自制图像处理小工具-创新互联

学习的过程向来不是容易的,创造一个作品的过程更是不容易的。因此,在文章的最后,提供了两个现成的示例代码,大家直接可以拿来运行。在完成大作业的时候,大家可以在已有作品的基础上,按照自己的需求进行修改,添加我们课程要求的功能,并体会如何完成一个完整的项目。 

按需定制可以根据自己的需求进行定制,成都网站设计、成都网站建设、外贸网站建设构思过程中功能建设理应排到主要部位公司成都网站设计、成都网站建设、外贸网站建设的运用实际效果公司网站制作网站建立与制做的实际意义

特别特别希望大家可以把下面的小功能整合成一个完整的项目~  期待!

下面分功能演示实现细节(这些功能源自于发布的大作业要求):

1、导入图片(或从摄像头加载图片 ); 1)选择文件夹打开照片;

% '*.*'为显示当前文件夹中的所有文件;
% select a picture为文件对话框的标题;
% 'multiselect','on'为打开选择多个模式(默认为关);
% '.\'为要打开的文件路径
[file,path] = uigetfile('*.*','select a picture','multiselect','on','.\'); 
file_path=fullfile(path,file);
img=imread(file_path);
imshow(img);
title("原图像");
2)从摄像头加载图片;

加载摄像头需要获取硬件支持,所以在matlab上需要安装一个类似于驱动的软件,安装了好久网速不给力呀 ~   具体细节可参考:

MATLAB调用USB摄像头实现过程_飞天长虹的博客-博客_matlab调用摄像头

clear,clc,close all;
vid = videoinput('winvideo', 1, 'YUY2_640x480')
set(vid,'ReturnedColorSpace','rgb');
vidRes=get(vid,'VideoResolution');
width=vidRes(1);
height=vidRes(2);
nBands=get(vid,'NumberOfBands');
hImage=image(zeros(vidRes(2),vidRes(1),nBands));
preview(vid,hImage);
start(vid);
img = getsnapshot(vid);
image(img);
imshow(img);title("摄像头获取图像");
2、彩色图像灰度化; 3、灰度图像二值化; 4、目标检测(即两幅图像相减);

功能2-4,请参考本人博客数字图像处理之matlab实验(一):基本操作_苗妮的博客-博客_matlab 形态学区域填充

5、图像的灰度变换(包括指数变换、对数变换); 6、直方图均衡化 

显示处理后图像和处理后图像直方图;处理前后对比效果显示在一张图中。

功能5-6,请参考本人博客

数字图像处理之matlab实验(二):图像增强_苗妮的博客-博客

7、图像平滑(去除噪声)

对图像分别添加高斯噪声和椒盐噪声,并分别用均值滤波器、中值滤波器、高斯滤波器处理,并将处理结果显示在一张图中;

8、图像锐化(提取边缘)

分别采用robert和二阶算子提取图像边缘,并将处理结果显示在一张图中;

功能7-8,请参考本人博客

数字图像处理之matlab实验(三):空间滤波器_苗妮的博客-博客

9、频域处理

对图像做平滑处理和提取边缘,并将处理结果显示在一张图中;

10、图像复原

对原图做运动模糊,并进行图像复原处理,将原图、模糊图、恢复后的模糊图显示在一张结果图中;

功能9-10,参考本人博客:

11、形态学处理

(1)腐蚀、(2)膨胀、(3)开运算、(4)闭运算处理、(5)形态学滤波、(6)击中与不击中变换;

功能11,参考本人博客

数字图像处理之matlab实验(五):形态学图像处理_苗妮的博客-博客

12、图像分割(提取图中的红苹果) 

(1)将已知图像进行消噪处理

(2)对彩色图像进行目标和背景分析

(3)通过颜色将图像进行分割

(4)进行形态学处理,提取目标

在将苹果分割的过程中,我们发现直方图分割、阈值分割在这个场景下是失效的,此处给出的是kmeans算法,当然基于颜色的分割效果理论上也是ok的,代码可以自己尝试写一下。

clear,clc,close all;
Image=imread('fruit.jpg');
subplot(121);imshow(Image),title('原图像'); 
hsv=rgb2hsv(Image);
h=hsv(:,:,1);
h(h>330/360)=0;
[N,M]=size(h);
training=h(:);
startdata = [0;60/360;120/360;180/360;240/360;300/360];
[IDX,C]= kmeans(training,6,'Start',startdata);
idbw = (IDX == 1);
template = reshape(idbw, size(h));
subplot(122);imshow(template),title('分割后的图像');
imwrite(template,'clusterseg.jpg');
13、硬币检测及计数 

(1)分割硬币

(2)去除噪声

(3)连通区域判断硬币个数 

Image=imread('coin.bmp');
subplot(131),imshow(Image),title('原图像');
BW=im2bw(Image);
SE=strel('square',6);
subplot(132),imshow(BW),title('二值图像');
result1=imopen(imclose(BW,SE),SE);               %先闭后开
subplot(133);imshow(result1);title('先闭后开');
[L, NUM] = bwlabel(result1, 4) %检测二值图像中连通域的个数
%[L, NUM] = bwlabel(BW, N)
% BW 为输入二值化图像;
% N 可取值为4或8表示连接四连通或八连通区域;
% NUM 为找到的连通区域数目;
% L 为输出图像矩阵,其元素值为整数,背景被标记为0,第一个连通区域被标记为1,第二个连通区域被标记为2,依此类推.所以你不明白的1,2,3即为第1,2,3个连通区域的标记
S=sprintf('检测到的硬币个数为:%d',NUM);msgbox(S);%弹窗显示运行结果
14、检测特定的形状

本例演示了如何检测矩形:

clear,clc,close all;
image=rgb2gray(imread('shape.png'));
subplot(151),imshow(image),title('原图');
BW=edge(image,'canny');
subplot(152),imshow(BW),title('边界图像');
% imwrite(BW,'shapeedge.jpg');
SE=strel('disk',5); 
Morph=imclose(BW,SE);
subplot(153),imshow(Morph),title('形态学滤波'); 
% imwrite(Morph,'shapemorph.jpg');
Morph=imfill(Morph,'holes');
subplot(154),imshow(Morph),title('区域填充');
imwrite(Morph,'shapefill.jpg');
[B,L]=bwboundaries(Morph);
subplot(155),imshow(L),title('检测圆和矩形');
% imwrite(L,'Lplane.jpg');
STATS = regionprops(L,'Area', 'Centroid','BoundingBox');
len=length(STATS);
hold on
for i=1:len
    R=STATS(i).Area/(STATS(i).BoundingBox(3)*STATS(i).BoundingBox(4));
    boundary=fliplr(B{i});
    everylen=length(boundary);
    F=4*pi*STATS(i).Area/(everylen^2);
    dis=pdist2(STATS(i).Centroid,boundary,'euclidean');
    miu=sum(dis)/everylen;
    sigma=sum((dis-miu).^2)/everylen;
    C=miu/sigma;
    if R>0.9 && F<1 
        rectangle('Position',STATS(i).BoundingBox,'edgecolor','g','linewidth',2);
        plot(STATS(i).Centroid(1),STATS(i).Centroid(2),'g*');
    end
    if R>pi/4-0.1 && R0.9 && C>10
        rectangle('Position',[STATS(i).Centroid(1)-miu,STATS(i).Centroid(2)-miu,2*miu,2*miu],...
            'Curvature',[1,1],'edgecolor','r','linewidth',2); 
        plot(STATS(i).Centroid(1),STATS(i).Centroid(2),'r*');
    end
end
hold off
15 、用Matlab设计实现图形化界面。

调用后台函数完成设计,函数可以调用Matlab工具箱中的函数,也可以自己编写函数。设计完成后,点击GUI图形界面上的菜单或者按钮,在某些图像处理操作中能够接收参数,进行必要的交互式操作后,最终能显示运行结果。可以参考例子如下:

1)视频参考:Matlab图像处理GUI(附代码)_哔哩哔哩_bilibili

附上源码链接:https://pan.baidu.com/s/11dTBQUX2NMalT-yi1sm70Q 提取码:dwqm

2)这个忘记代码链接了,会把代码发群里。

16、优秀作品展示

1)曾同学的作品,详细参考她的博客,界面很清新,稍后会附上源码链接:基于MATLAB APP Designer设计图像处理小工具_栗几memeji的博客-博客

2)代同学的作品:

3)其他可以参考的作品:

数字图像处理MATLAB大作业:基础版_黑瘦真的好看的博客-博客matlab大作业——基础模板设计_阿喜。的博客-博客

数字图像处理之matlab大作业:基础版图像处理工具_...._L的博客-博客

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:数字图像处理之matlab大作业:自制图像处理小工具-创新互联
分享路径:http://pwwzsj.com/article/isjpg.html