数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
简介: 数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)

一、实验目的


1 理解阈值分割的依据及确定阈值的方法;

2 掌握常用的边缘检测算子的使用方法,加深对不同算子优缺点的理解;

3 能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能;


二、实验原理


(一) 阈值分割


1. 直方图法


测试图像:coins.png

原理:观察该图像的直方图,手动选取谷底点作为阈值对该图像进行分割。


2.OTSU法(最大类间方差法)确定阈值


此方法为选择阈值使目标和背景的类间方差最大或者目标(背景)内部方差最小。

相关函数: T=graythresh(f); %计算图像f的全局灰度阈值


3. 迭代阈值法


(1)选择一个初始阈值T0;

(2)根据阈值T0将图像分割为G1和G2两部分。G1包含所有小于等于T0的像素,G2包含所有大于T0的像素。分别求出G1和G2的平均灰度值m1和m2。

(3)得到新的阈值T1=(m1+m2)/2

(4)重复步骤(2)和(3),直到最新阈值和上一个阈值的差小于某个精度。


4. 点检测


用实验法确定阈值对图像中的孤立点进行检测,并总结阈值大小对检测结果的影响。

点检测模板w:

-1 -1 -1

-1 8 -1

-1 -1 -1

检测方法:

g=abs(imfilter(double(f), w))>=T


(二)边缘检测


利用边缘检测算子对图像进行操作,原理类似于图像增强中的模板和图像间的运算关系。

一阶导数可用于检测图像中的一个点是否在边缘上;

二阶导数可以判断一个边缘像素是在边缘亮的一边还是暗的一边;

一阶导数使用梯度算子,二阶导数使用拉普拉斯算子

各梯度算子模板如下:

0a2653c851af460fa595bd959398a8f1.png

各算子检测边缘的MATLAB程序语句如下:算子后面的参数可为默认,也可自行定义。

语法:[g,t]=edge(f, ‘method’, parameter)

说明:

g是一个逻辑数组,其值为:在f中检测到边缘的位置为1,其他位置为零;

method为边缘检测器方法,可选为: ‘sobel’, ‘prewit’, ‘roberts’, ‘log’(LoG), ‘zerocoss’, ‘canny’等;

parameter包含两部分:T为指定的阈值,第二部分为dir(检测边缘的首选方向: ‘horizontal’, ‘vertical’, ‘both’),或sigma(标准方差),或H(指定的滤波函数)。

例:

BW1=edge(I,‘roberts’,T, dir);

BW2=edge(I,‘prewitt’, T, dir);

BW3=edge(I,‘sobel’, T, dir);

BW4=edge(I,‘log’, T, dir);

BW5= edge(I,‘canny’, T, dir);

若不写次两个参数,则自动取默认值。


三、实验内容


(一)阈值分割


1. 直方图法


测试图像:coins.png

原理:观察该图像的直方图,手动选取谷底点作为阈值对该图像进行分割。


2. OTSU法


用OTSU法(最大类间方差法)确定阈值并对‘coins.png’或‘lena.jpg’进行分割。要求:分割用两种方法:(1)im2bw函数;(2)for循环。若用“coins.png”图像,则对该方法确定的阈值和上题中直方图确定的阈值进行比较,观察两值大小差别。


3.点检测


完成下面的练习,在实验报告中提交运行结果并回答问题。

练习:分别运行以下两段程序,并回答问题:

(1)

f=imread(‘saturn.png’);
w=[-1 -1 -1; -1 8 -1; -1 -1 -1];
g=abs(imfilter(double(f), w));
T=max(g(😃);
T=T*0.5;
g=g>=T;
imshow(f);
figure, imshow(g);

问题:此段程序图像g能否正常显示,为什么?如何解决?(根据错误提示)

不能正常显示,因为对于rgb图像没法使用二维模板处理出正确的结果,从而不能显示出正确结果,加上f=rgb2gray(f);


(2)

f=imread(‘saturn.png’);
f1=rgb2gray(f);
f1=imresize(f1,[512 512]);
w=[-1 -1 -1;-1 8 -1;-1 -1 -1];
g=abs(imfilter(double(f1),w));
a=1;T=a*max(g(😃);
g=g>=T;
imshow(f1);
figure, imshow(g);

问题:

程序中的imresize函数的作用是什么?

对图像进行放缩到指定大小


对g=abs(imfilter(double(f1),w))中包含的三个函数的功能分别进行说明。

Double是为了将f1变成双精度浮点型(进行限定)、imfilter是通过w模板对图像进行卷积运算、abs是为了求取绝对值,因为有负数,给取正,便于进行比较


若要清晰显示原图像中的四个孤立点应对第二段程序中的哪部分进行调整。

a=1 的地方,对a进行下调


3. 迭代阈值法(选做)


要求:读懂程序,对3-13行给出注释

f=imread(‘rice.png’);
imshow(f);
count=0;
T=mean2(f);
done=false;
while ~done
count=count+1;
g=f>T;
T1=0.5*(mean(f(g))+mean(f(~g)));
done=abs(T-T1)<0.05;
T=T1;
end
f1=im2bw(f,T/255);
imshow(f);
figure,imshow(f1);


(二)边缘算子分割


1. 算子分割


(1)利用imfilter函数及Sobel模板(见实验原理部分)分别进行水平、垂直以及综合两方向的边缘检测。

步骤:

a. 读取‘cameraman.tif’图片并用im2double函数进行数据类型转换;

b. 分别生成水平和垂直两个方向的检测模板矩阵;

c. 用imfilter函数对图像分别进行两个方向的算子处理结果GX和GY;

d. 利用abs函数分别取两个方向各自的边缘图像的模值|GX|和|GY|;

e. 分别显示水平边缘、垂直边缘以及两个方向总边缘(|GX|+|GY|);

问题:观察运行后各模值的取值特点,总结本段程序的功能是什么?处理后的图像类型(是灰度图像还是二值图像)

特点是各个像素值是双精度形式,功能是图像锐化,增加边缘的锐利程度,灰度图像


(2)利用edge函数和Sobel算子分别检测水平、垂直及两个方向总边缘并进行显示。

问题:本段程序处理后的图像类型是灰度图像还是二值图像?通过(1)和(2)两段程序运行结果分析,说明两段程序功能上的区别。

二值图像。用算子进行计算时,运算出来的结果是灰度图像不是二值图,这是因为我们在进行算子处理时,是将其边缘锐化,使得边缘显示锐利,是图像增强。而利用edge算法时,处理出来的矩阵是二值图像而不是灰度图,这就是边缘检测,属于图像分割。


2. edge函数分割


用edge函数分别实现sobel算子、Prewitt算子、roberts算子、log算子、零交叉及canny算子的边缘提取,比较几种算子的分割效果,给出结论。

sobel算子、Prewitt算子、roberts算子是一阶算子,而log算子、零交叉及canny算子是二阶算子,并且对于canny算子是有方向梯度,所以效果最好


这里是引用


要求:图像采用‘lean’图像或‘cameraman’图像,所有图像显示在同一窗口。


四、撰写实验报告

程序、运行效果图、评价及总结(实验内容中的问题必须回答)


五、实验代码


%% 1
I = imread('C:\Users\DELL\Desktop\lena.jpg');
level = graythresh(I);
BW = im2bw(I,level);
imshow(BW);
[M,N] = size(I);
F = zeros(512);
for i = 1:M
   for j = 1:N
      if im2double(I(i,j)) >= level
          F(i,j) = 1;
      elseif im2double(I(i,j)) < level
          F(i,j) = 0;
      end
   end
end
imshow(F);
subplot(131);imshow(I);title('原图像')
subplot(132);imshow(BW);title('im2bw图像')
subplot(133);imshow(F);title('For图像')
%%
f=imread('saturn.png');
f=rgb2gray(f);
w=[-1 -1 -1; -1 8 -1; -1 -1 -1];
g=abs(imfilter(double(f), w));
T=max(g(:));
T=T*0.5;
g=g>=T;
imshow(f); 
figure, imshow(g);
f=imread('saturn.png');
f1=rgb2gray(f);
f1=imresize(f1,[512 512]);
w=[-1 -1 -1;-1 8 -1;-1 -1 -1];
g=abs(imfilter(double(f1),w));
a=0.4;T=a*max(g(:));
g=g>=T;
imshow(f1); 
figure, imshow(g);
%% 
f=imread('rice.png');
imshow(f);
count=0;
T=mean2(f);
done=false;
while ~done
    count=count+1;
    g=f>T;
    T1=0.5*(mean(f(g))+mean(f(~g)));
    done=abs(T-T1)<0.05;
    T=T1;
end
f1=im2bw(f,T/255); %因为阈值范围在【0,1】之间,而mean2得出的阈值只会在[0,255]所以进行归一化
imshow(f);
figure,imshow(f1);
%% 1 (1)
I1 = imread('lena.jpg');
I = im2double(I1);
BW1 = [-1 -2 -1;0 0 0;1 2 1];
BW2 = [-1 0 1;-2 0 2;-1 0 1];
g1 = imfilter(I,BW1);
g2 = imfilter(I,BW2);
% g3 = imfilter(I,BW3);
a1 = abs(g1);
a2 = abs(g2);
a3 = a1+a2;
figure
subplot(221);imshow(I1);title('原图像');
subplot(222);imshow(a1);title('水平');
subplot(223);imshow(a2);title('垂直');
subplot(224);imshow(a3);title('总边缘');
%% 1 (2)
I1 = imread('cameraman.tif');
I = im2double(I1);
BW1 = edge(I,'sobel','horizontal'); %水平
BW2 = edge(I,'sobel','vertical'); %垂直
BW3 = edge(I,'sobel','both');   %两者
figure
subplot(221);imshow(I1);title('原图像');
subplot(222);imshow(BW1);title('水平');
subplot(223);imshow(BW2);title('垂直');
subplot(224);imshow(BW3);title('总边缘');
%% 2
I1 = imread('cameraman.tif');
I = im2double(I1);
BW1 = edge(I,'sobel');
BW2 = edge(I,'roberts');
BW3 = edge(I,'prewitt');
BW4 = edge(I,'log');
BW5 = edge(I,'zerocross');
BW6 = edge(I,'canny');
subplot(231);imshow(BW1);title('sobel');
subplot(232);imshow(BW2);title('roberts');
subplot(233);imshow(BW3);title('prewitt');
subplot(234);imshow(BW4);title('log');
subplot(235);imshow(BW5);title('zerocross');
subplot(236);imshow(BW6);title('canny');


六、实验


直方图

Otus

0a2653c851af460fa595bd959398a8f1.png

点检测


0eacb84100b54626af849e6b562bf92a.png


迭代阈值法

2d65d23f6d4748949b924e4057485923.png

Imfilter加算子

2e9b90b2ca334476abebe75bafe6eeaa.png

Edge算子

4cebaac233b3433da32a72337a77fc60.png

各种edge

6de278e6d6694ce5bb08e7e842b7e74b.png


相关文章
|
5月前
|
存储 算法 数据可视化
基于 MATLAB的GUI信号处理界面设计 源码+运行截图
基于 MATLAB的GUI信号处理界面设计 源码+运行截图
166 2
|
7月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
285 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
7月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
170 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
7月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
148 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
10月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
3月前
|
机器学习/深度学习 自然语言处理 搜索推荐
深度分析 | 2024主流的智能客服系统有哪些?他们是怎么实现的?
本文深入探讨了智能客服系统的使用方法和相关技术实现逻辑,涵盖前端交互、服务接入、逻辑处理、数据存储四大层面,以及自然语言处理、机器学习、语音识别与合成、数据分析与挖掘、知识库管理和智能推荐系统等核心技术,帮助企业更好地理解和应用智能客服系统,提升服务效率和客户满意度。
515 1
|
1天前
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
49 5
|
1月前
|
人工智能 自然语言处理 安全
2025最新排名|盘点值得推荐的5个在线客服系统
在数字化浪潮下,在线客服系统迅速发展,成为企业提升竞争力的关键。本文推荐五款2025年值得使用的在线客服系统:合力亿捷、淘宝、京东、华为云和中国移动客服系统。它们各自具备全渠道接入、智能问答、数据分析、高稳定性等亮点,助力企业高效服务客户,优化营销策略并提升整体运营效率。
102 24
|
13天前
|
自然语言处理 Prometheus 监控
基于DeepSeek的智能客服系统实战:从开发到部署
本文详细介绍如何将基于DeepSeek的智能客服系统从开发到部署,涵盖服务器选择、环境配置、代码部署及Web服务器设置。通过具体案例和代码示例,讲解系统上线步骤,并介绍使用Prometheus、Grafana等工具进行性能监控的方法。此外,针对高并发、API调用失败等常见问题提供解决方案,确保系统的稳定运行。最后强调数据安全与隐私保护的重要性,帮助读者全面掌握智能客服系统的部署与维护。
|
5月前
|
存储 自然语言处理 机器人
实战揭秘:当RAG遇上企业客服系统——从案例出发剖析Retrieval-Augmented Generation技术的真实表现与应用局限,带你深入了解背后的技术细节与解决方案
【10月更文挑战第3天】随着自然语言处理技术的进步,结合检索与生成能力的RAG技术被广泛应用于多个领域,通过访问外部知识源提升生成内容的准确性和上下文一致性。本文通过具体案例探讨RAG技术的优势与局限,并提供实用建议。例如,一家初创公司利用LangChain框架搭建基于RAG的聊天机器人,以自动化FAQ系统减轻客服团队工作负担。尽管该系统在处理简单问题时表现出色,但在面对复杂或多步骤问题时存在局限。此外,RAG系统的性能高度依赖于训练数据的质量和范围。因此,企业在采用RAG技术时需综合评估需求和技术局限性,合理规划技术栈,并辅以必要的人工干预和监督机制。
318 3

热门文章

最新文章