当前位置: 首页 > news >正文

利用几种阈值法从给定的图像中分割出目标,去除背景

图像分割是图像处理中的一个重要步骤,用于将图像中的目标与背景分离。阈值法是一种简单而有效的图像分割方法,通过选择合适的阈值将图像像素分为前景和背景。

1. 全局阈值法

全局阈值法使用一个固定的阈值对整个图像进行分割。这种方法适用于背景和目标对比度较高的图像。

function segmented_image = global_thresholding(image, threshold)% 输入:灰度图像 image 和阈值 threshold% 输出:分割后的二值图像 segmented_image% 将图像转换为二值图像segmented_image = image > threshold;
end

2. 自适应阈值法

自适应阈值法根据图像的局部区域动态调整阈值,适用于背景不均匀的图像。

function segmented_image = adaptive_thresholding(image, neighborhood_size, C)% 输入:灰度图像 image,邻域大小 neighborhood_size 和常数 C% 输出:分割后的二值图像 segmented_image% 使用自适应阈值法分割图像segmented_image = adaptthresh(image, 'NeighborhoodSize', neighborhood_size, 'Sensitivity', C);segmented_image = imbinarize(image, segmented_image);
end

3. Otsu阈值法

Otsu阈值法是一种自动选择阈值的方法,通过最小化图像的类内方差或等价地最大化类间方差来确定阈值。

function segmented_image = otsu_thresholding(image)% 输入:灰度图像 image% 输出:分割后的二值图像 segmented_image% 使用Otsu方法自动计算阈值threshold = graythresh(image);segmented_image = imbinarize(image, threshold);
end

4. 多阈值法

多阈值法使用多个阈值将图像分为多个区域,适用于目标和背景对比度复杂的情况。

function segmented_image = multi_thresholding(image, thresholds)% 输入:灰度图像 image 和阈值数组 thresholds% 输出:分割后的多区域图像 segmented_image% 初始化分割图像segmented_image = zeros(size(image), 'uint8');% 遍历每个阈值for i = 1:length(thresholds)-1segmented_image(image > thresholds(i) & image <= thresholds(i+1)) = i;end
end

5. MATLAB代码

展示如何使用上述方法从给定的图像中分割出目标并去除背景。

% 清空环境
clc;
clear;
close all;% 读取图像
image = imread('example_image.jpg'); % 替换为实际图像路径
image = rgb2gray(image); % 转换为灰度图像% 全局阈值法
threshold = 128; % 选择一个合适的阈值
segmented_image_global = global_thresholding(image, threshold);% 自适应阈值法
neighborhood_size = 15; % 邻域大小
C = 0.1; % 常数
segmented_image_adaptive = adaptive_thresholding(image, neighborhood_size, C);% Otsu阈值法
segmented_image_otsu = otsu_thresholding(image);% 多阈值法
thresholds = [50, 150, 200]; % 选择多个阈值
segmented_image_multi = multi_thresholding(image, thresholds);% 显示结果
figure;
subplot(2, 3, 1);
imshow(image);
title('原始图像');subplot(2, 3, 2);
imshow(segmented_image_global);
title('全局阈值法');subplot(2, 3, 3);
imshow(segmented_image_adaptive);
title('自适应阈值法');subplot(2, 3, 4);
imshow(segmented_image_otsu);
title('Otsu阈值法');subplot(2, 3, 5);
imshow(segmented_image_multi);
title('多阈值法');

参考代码 利用几种阈值法从给定的图像中分割出目标,去除背景 youwenfan.com/contentcnc/83853.html

6. 结果分析

通过上述代码,可以对给定的图像进行分割,提取出目标并去除背景。不同的阈值法适用于不同的图像特性:

  • 全局阈值法:适用于背景和目标对比度较高的图像。
  • 自适应阈值法:适用于背景不均匀的图像。
  • Otsu阈值法:自动选择阈值,适用于大多数灰度图像。
  • 多阈值法:适用于目标和背景对比度复杂的情况。

通过选择合适的阈值法,可以有效地从图像中分割出目标并去除背景,为后续的图像分析和处理提供基础。

http://www.sczhlp.com/news/9693/

相关文章:

  • centos系统,docker安装失败报错依赖问题。
  • nginx 日志路径配置修改
  • linux 文件命令
  • 8.5.5 编写信号处理程序
  • Dify入门系列(2)| 5 分钟部署 Dify:云服务 vs 本地 Docker
  • 图论杂题选做 20250802
  • EasyExcel 导入/出通用枚举映射
  • dp09
  • 克隆arcgispro-py3虚拟环境
  • Air780EGH硬件开发必备:UART串口电路设计最佳实践
  • bytes和基本数据类型之间的转换
  • 糟糕,生产环境频繁Full GC,怎么办?
  • CSP/NOIP常用模板大全₍^˶⦁༝⦁˶^₎◞ ̑̑
  • 洛谷P1525 [NOIP 2010 提高组] 关押罪犯(恭喜解锁拆点并查集!!)
  • Score Matching
  • 对象转原始值
  • 通达信配色
  • I2C通信接口 VK2C22B 高抗干扰LED驱动段码液晶驱动芯片
  • 【自学嵌入式:stm32单片机】EXTI外部中断
  • Dify入门系列(1)| Dify 是什么?真能开启低代码 AI 应用开发?
  • 题解:P4368 [Code+#4] 喵呜
  • vue3 vue3-form-element表单生成工具
  • Codeforces 1042G Wafu! 题解 [ 绿 ] [ 数学 ] [ 线性 DP ] [ 前缀和 ] [ 暴力枚举 ]
  • 第二章:Linux基础命令
  • 题解:P4779 【模板】单源最短路径(标准版)
  • 事倍功半是蠢蛋39 cursor 报错user is unauthorized
  • 一个不错的AI写作工具
  • 2025CSP-S模拟赛33 比赛总结
  • 彩笔运维勇闯机器学习--一元线性回归
  • CAD_图纸文件拖动到CAD软件里面无法打开的解决办法