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

二值图像的面积求取的两种方法及MATLAB实现

一、引言

       面积在数字图像处理中经常用到,在MATLAB中,计算二值图像的面积通常可以通过两种主要方法实现:遍历法和直接利用bwarea函数。下面将分别介绍这两种方法的原理和相应的MATLAB代码示例。

二、遍历法计算二值图像面积的原理和MATLAB代码

        原理:遍历法是通过直接遍历图像中的每一个像素,统计值为1的像素个数,从而估算出图像中对象的面积。由于二值图像中对象的面积通常与其包含的像素数成正比,因此这种方法简单直观。

clear all;
close all;
clc;
bwImage = imread('circles.png');  % 读取二值图像  
imshow(bwImage),title('二值图像');
% 确保图像是逻辑数组(二值图像),如果不是,则进行转换  
bwImage = logical(bwImage);  
totalArea = 0;  % 初始化面积计数器  
% 遍历图像的每个像素,并计算前景像素的数量  
[rows, cols] = size(bwImage);  %获取二值图像的行列数
for row = 1:rows  
    for col = 1:cols  
        if bwImage(row, col)  
            totalArea = totalArea + 1;  
        end  
    end  
end  
% 显示总面积  
fprintf('图像中前景的总面积(像素计数): %d\n', totalArea);

运行结果:

8447c49d7ab147f98abc6c34d7b4a6b6.png

9d8b921d4ed74048862f9663b220b6a5.png

三、bwarea函数计算二值图像面积和MATLAB代码

      原理bwarea函数是MATLAB中专门用于计算二值图像中对象面积的函数。它通过对图像中每个像素的面积求和来估算图像中所有on像素的面积。需要注意的是,由于不同像素图案的加权不同,返回的面积值可能与实际像素数不完全相同,但大致上反映了图像中对象的面积。

clear all;close all;clc;
img = imread('circles.png');% 读取图像      
totalArea = sum(bwarea(img));  % bwarea返回的是每个对象的面积,如果需要总面积,需要求和  
fprintf('图像中前景的总面积(像素计数): %f pixels\n', totalArea);% 输出总面积

0564b1c62b8e4b9e9a7b92374e2f4204.png

四、对比分析

      综上所述,利用遍历法和bwarea函数求解面积时结果不同,主要是由于它们在计算原理、像素处理方式、边界和噪声处理等方面的差异所导致的。在实际应用中,应根据实际情况和图像特性选择合适的方法。

      如果你觉得本文对大家学习有帮助,请关注、转发和点赞!

 

 

相关文章:

  • 【漏洞复现】VEXUS多语言货币交易所存在未授权访问漏洞
  • Java五子棋
  • Centos/fedora/openEuler 终端中文显示配置
  • 进程、线程、协程详解:并发编程的三大武器
  • pyhton语法 正则表达式
  • c++进阶学习--------多态
  • 目前相对稳定的下载上传的方法(WebClient )(异步与进度)
  • FortiGate SSL VPN host check添加自定义防病毒软件
  • VS开发 - 静态编译和动态编译的基础实践与混用
  • Python爬虫bs4的基本使用
  • mfc140u.dll缺失?快速解决方法全解析,解决mfc140u.dll错误
  • Harmony商城项目
  • SpringBoot日常:链路追踪skyworking的接入
  • MYSQL求月份同比数据和环比数据
  • 【步联科技身份证】 身份证读取与解析———未来之窗行业应用跨平台架构
  • [译]Python中的类属性与实例属性的区别
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • canvas 绘制双线技巧
  • Docker下部署自己的LNMP工作环境
  • If…else
  • JavaScript新鲜事·第5期
  • JavaScript学习总结——原型
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Redis 懒删除(lazy free)简史
  • 编写高质量JavaScript代码之并发
  • 初识 webpack
  • 从零开始在ubuntu上搭建node开发环境
  • 多线程 start 和 run 方法到底有什么区别?
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 人脸识别最新开发经验demo
  • 我的业余项目总结
  • 系统认识JavaScript正则表达式
  • 想写好前端,先练好内功
  • 消息队列系列二(IOT中消息队列的应用)
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用简单代码看卷积组块发展
  • 原生 js 实现移动端 Touch 滑动反弹
  • 智能合约开发环境搭建及Hello World合约
  • 【干货分享】dos命令大全
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #宝哥教你#查看jquery绑定的事件函数
  • #控制台大学课堂点名问题_课堂随机点名
  • (1)(1.9) MSP (version 4.2)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (转)winform之ListView
  • .NET8使用VS2022打包Docker镜像
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET学习教程二——.net基础定义+VS常用设置
  • .vue文件怎么使用_我在项目中是这样配置Vue的