图像分割(二)——低照度下自然场景下图像分割的一种新方法

一天傍晚,在景观河散步,看到景观河旁边雕塑鸭子,就用手机拍摄下来,但由于是晚上光线不是太好,且雕塑下面的地板有条纹和阴影。想着尝试用传统的数字图像处理方法把鸭子从自然场景中提取出来。

读入低照度下图像,然后把鸭子从背景分割出来。算法主要步骤:1.读入彩色图像;2.图像裁剪;3.彩色图像转灰度图像;4.对比度拉伸;5.图像二值化;6.数学形态学运算处理后的二值图像;7.边缘检测图像;8.边缘检测和阈值分割相结合进行目标分割;9.边缘检测和阈值分割相结合进行目标分割。结果显示,上述方法取得了较好的分割效果。

close all;% 关闭所有的图像窗口

clc;% 清除当前command区域的命令

imtool close all;%关闭imtool窗口

I0 = imread('duck1.jpg');

I = imcrop(I0,[190 170 1400 1000]);%图像裁剪

I2=rgb2gray(I);

figure,imshow(I2);

figure,imhist(I2);

I2Adjust=imadjust(I2); %对比度拉伸

figure,imshow(I2Adjust);

figure,imhist(I2Adjust);

imtool(I2Adjust);

I3=im2bw(I2Adjust,100/255); %图像二值化,阈值选择很关键

figure,imshow(I3);

I_4=~I3;

figure,imshow(I_4);

I_4=imfill(I_4,'holes');figure,imshow(I_4);

figure,imshow(I_4);

I_5=imclose(I_4,strel('disk',4)); %利用开运算连接物体,结构元素的形状和大小选择很关键

figure,imshow(I_5);

I_5=imopen(I_5,strel('disk',2));

figure,imshow(I_5);

I_6=bwareaopen(I_5,2100);

figure,imshow(I_6);

I_8=edge(I2,'sobel','vertical');%边缘检测,把原始图像中的水平线去掉

%I_8=edge(I2,'sobel');

figure,imshow(I_8);

I_9=I_6+I_8;

figure,imshow(I_9);%利用边缘检测和阈值分割相结合进行目标分割

I_10=imclose(I_9,strel('disk',9));

figure,imshow(I_10);

I_11=bwareaopen(I_10,500);

figure,imshow(I_11);

I_12=imfill(I_11,'holes');

figure,imshow(I_12);

I_13=imclose(I_12,strel('disk',18));

figure,imshow(I_13);

I_14=imfill(I_13,'holes');

figure,imshow(I_14);

I_15=imopen(I_14,strel('disk',10));

figure,imshow(I_15);

I_16=uint8(I_15).*I;

figure,imshow(I_16),title('将鸭子从背景分割中分割出来');

[L,num] = bwlabel(I_15);

disp('鸭子的数量')

num

figure('Name','低照度环境下的图像背景分割一种新方法','NumberTitle','off');

subplot(3,3,1),imshow(I0),title('显示原始图像');

subplot(3,3,2),imshow(I),title('图像裁剪');

subplot(3,3,3),imshow(I2),title('彩色图像转灰度图像');

subplot(3,3,4),imshow(I2Adjust),title('对比度拉伸');

subplot(3,3,5),imshow(I3),title('图像二值化');

subplot(3,3,6),imshow(I_6),title('数学形态学运算处理后的二值图像');

subplot(3,3,7),imshow(I_8),title('边缘检测图像');

subplot(3,3,8),imshow(I_9),title('边缘检测和阈值分割相结合进行目标分割');

subplot(3,3,9),imshow(I_15),title('边缘检测和阈值分割相结合进行目标分割');

%程序在MATLAB 2018a 调试通过

原始图像如下:

   欢迎各位网友对上面算法的不足之处提出改进意见,谢谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/729445.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Seal^_^【送书活动第7期】——《IT项目经理进阶之道》

Seal^_^【送书活动第7期】——《IT项目经理进阶之道》 一、参与方式二、本期推荐图书2.1 作者荐语2.2 编辑推荐2.3 图书简介2.4 前言2.5 目 录 三、正版购买 从领导、客户、下属、供应商四个角度,介绍IT项目经理在实际工作中需要面对的挑战,以及一些常见…

【网络安全学习】漏洞扫描:-03- Nikito与Wapiti漏洞扫描的使用

1️⃣ Nikto漏洞扫描 Nikto是一个开源的Web扫描评估程序,它可以对目标Web服务器进行快速而全面的检查,以发现各种潜在的安全问题和漏洞。 🅰️ 如何使用 ❓ nikto -Display 1234ep -h [域名或IP地址] -o nikto.html # -h参数:指…

实战18:基于tkinter+jupyter notebook开发的情感分析系统

项目演示: 完整代码: import pandas as pd import numpy as np from collections import Counter import re import jieba from tqdm import tqdm from sklearn.metrics import roc_curve, auc import joblib import gensim from sklearn.svm import SVC from gensim.mode…

docker启动nacos挂载目录并修改配置文件

1 通过 Docker 拉取 nacos 镜像 docker pull nacos/nacos-server:v2.1.22 创建宿主机挂载目录 # 用于挂载 nacos 的日志 mkdir -p /mydata/nacos_home/logs/ # 用于挂载 nacos 的配置 mkdir -p /mydata/nacos_home/conf/ # 用于挂载 nacos 的数据 mkdir -p /mydata/nacos_hom…

小林图解系统-四.内存管理 4.1 为什么要有虚拟内存?

虚拟内存 单片机没有操作系统,单片机的CPU是直接操作内存的物理地址。 要想在内存中同时运行两个程序是不可能的。如果第一个程序在2000的位置写入一个新的值,将会擦掉第二个程序存放在相同位置上的所有内容,所以同时运行两个程序会立刻崩溃…

远程桌面修改端口号后无法连接,怎么解决

远程桌面连接让用户在不同地点,不同设备上远程控制一台计算机,很大程度上节约了用户的成本并且提高了办公的灵活性和高效性。有时候修改了端口号就会连接不上,那该怎么办呢? 1. 检查本地计算机和远程计算机是否都连接了网络且网…

《精通嵌入式Linux编程》——解锁嵌入式Linux开发的无限可能

文章目录 📑前言一、书籍概览与作者风采二、内容详解与特色亮点2.1 嵌入式Linux基础与入门2.2 系统编程与内核探索2.3 驱动开发与实战演练2.4 内存管理与性能优化2.5 系统调试与性能提升2.6 综合项目实践与案例分析 三、书籍价值与应用展望 📑前言 在当今…

利用反向代理编写HTTP抓包工具——可视化界面

手写HTTP抓包工具——可视化界面 项目描述语言golang可视化fynev2功能代理抓包、重发、记录 目录 1. 示例1.1 主界面1.2 开启反向代理1.3 抓包1.4 历史记录1.5 重发 2. 核心代码2.1 GUI2.1 抓包 3. 结语3.1 传送门 1. 示例 1.1 主界面 1.2 开启反向代理 1.3 抓包 1.4 历史记录…

国产32位高精度低功耗DSP音频处理芯片-DU561

DU561是一款集成多种音效算法高性能32位DSP音频处理芯片;具有高速、高精度、高稳定性等特点,能实现对音频信号的滤波、增强、降噪、混响、变调等处理,广泛应用于音频系统、通信系统、汽车音响、家庭影院、舞台设备等领域。 音频处理可以更好地…

ShuffleNet系列论文阅读笔记(ShuffleNetV1和ShuffleNetV2)

目录 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices摘要Approach—方法Channel Shuffle for Group Convolutions—用于分组卷积的通道重排ShuffleNet Unit—ShuffleNet单元Network Architecture—网络体系结构 总结 ShuffleNet V2: Pra…

工业无线网关在实际生产中的应用效果和价值-天拓四方

随着智能制造的快速发展,工业无线网关作为关键通信设备,在提升生产效率、优化生产流程、实现设备间的互联互通等方面发挥着越来越重要的作用。以下是一个关于工业无线网关在智能制造行业应用的具体案例,展示了其在实际生产中的应用效果和价值…

toLocaleString浏览器兼容问题,导致时间在不同版本显示24/12小时制

先看toLocaleString结果区别 旧版 新版 问题原因 Google Chrome 和其他浏览器会定期更新,这些更新可能包括对 JavaScript 引擎和国际化的改进较新版本的 Chrome(版本 125.0.6422.142)已经更新了其国际化实现,以默认使用24小时制 …

SpringBoot整合justauth实现多种方式的第三方登陆

目录 0.准备工作 1.引入依赖 2.yml文件 3. Controller代码 4.效果 参考 0.准备工作 你需要获取三方登陆的client-id和client-secret 以github为例 申请地址&#xff1a;Sign in to GitHub GitHub 1.引入依赖 <?xml version"1.0" encoding"UTF-8&quo…

NAT Easyip实验

我们这篇博客将重点讲述easy ip的配置&#xff1a; 以下面的一个简单的实验拓扑图为例&#xff1a; 本实验使用的网络地址&#xff1a; 1. 我们先来完成基础配置&#xff1a; 1.1AR1的基础配置&#xff1a; 1.2AR2上的基础配置 1.3完成AR1和AR2的基础配置后&#xff0c;我们…

【SPIE出版】第六届无线通信与智能电网国际会议(ICWCSG 2024,7月26-28)

随着科技的飞速发展和能源需求的日益增长&#xff0c;智能电网技术逐渐成为电力行业的重要发展方向。与此同时&#xff0c;无线通信技术在近年来也取得了显著的进步&#xff0c;为智能电网的发展提供了强有力的支持。为了进一步推动无线通信与智能电网的结合与发展&#xff0c;…

Socket编程之多进程模型

一、多进程模型概述 基于最初的阻塞网络 I/O &#xff0c;若服务器要为多个客户端提供支持&#xff0c;在较为传统的手段中&#xff0c;多进程模型是常用的选择&#xff0c;即为每个客户端都分配一个进程来处理其请求。 服务器的主进程主要负责对客户连接的监听&#xff0c;一旦…

视频云沉浸式音视频技术能力探索与建设

概述 随着传输技术、显示技术与算力的持续提升&#xff0c;用户对于音视频体验的需求在提高&#xff0c;各家设备厂商也在探索和推出对应的技术与产品。打造空间感的空间视频与空间音频是其中最为关键的2项技术&#xff0c;bilibili视频云在这两项技术领域也进行了相关代探索与…

redis.conf 参数详解,方便进行性能优化配置

以下是redis.conf中一些常见参数的详细说明&#xff1a; daemonize&#xff1a;是否以后台进程运行&#xff0c;默认为no&#xff1b; pidfile&#xff1a;如以后台进程运行&#xff0c;则需指定一个pid&#xff0c;默认为/var/run/redis.pid&#xff1b;bind&#xff1a;绑定主…

WPF——属性

一、属性 类最初只有字段与函数&#xff0c;字段为一个变量&#xff0c;访问权限可以是private&#xff0c;protected&#xff0c;public。而将字段设为private&#xff0c;不方便外界对类数据的操作&#xff0c;但是将字段设为public又怕外界对数据进行非法操作&#xff0c;于…