差分进化算法在图像处理中的应用研究(Matlab代码实现)

news2024/10/7 12:27:10

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

本文为Storn和Price制定的著名差分进化计算智能算法的实现。该算法使用Otsu准则作为适应度函数,可用于使用多个阈值对灰度图像进行阈值设置。

该程序旨在生成任何灰度图像的0到255级直方图,然后尝试找到阈值,在该阈值下,图像可以最佳地分离为属于图像前景的像素和属于图像背景的像素。最佳阈值的评估使用Otsu标准进行,阈值的Otsu适应度作为“类间方差”返回。值越高,适合度越好。差分进化保持生成1到256范围内的阈值,并评估图像的阈值的适合性。使用突变和交叉,一代又一代地选择更为理想的阈值。用户可以选择运行多个试验,并选择这些试验中的最佳阈值,并显示分割图像以及直方图和阈值的位置。

📚2 运行结果

🎉3 参考文献

[1]刘波,王凌,金以慧.差分进化算法研究进展[J].控制与决策,2007(07):721-729.DOI:10.13195/j.cd.2007.07.3.liub.001.

👨‍💻4 Matlab代码

主函数部分代码:

% This is the main file for running Differential Evolution

clc;clear all;close all;

images = {'lena_gray.png', 'barbara_gray.bmp'};

imgName = char(images(1));

infor = imfinfo(imgName);

disp(infor);

[I, colormap] = imread(imgName);

if isempty(colormap), I = rgb2gray(I); else I = ind2gray(I, colormap);end

I = im2uint8(I);

searchSpace = imhist(I);

%-----Control panel

thresh = 8;%the number of thresholds

population = 30;%the number of vectors

masterBeta = 2.0;%beta is real number belongs to [0 -> 2]

cr = 0.3;%crossover probability range [0 -> 1]

generations = 200;

numTrials = 1;

if population < 4, disp('Population should be more than 3');return;end

minThresh = 1; maxThresh = numel(searchSpace);

figNum = 1;

figure(figNum);clf;figNum=figNum+1;imshow(I);title('Original image');

%figure(figNum);clf;figNum=figNum+1;imhist(I);title(strcat('histogram of : ',imgName));

%OtsuThreshold = graythresh(I);II = im2bw(I);imshow(II);title('Otsu thresholded image');

runtime = [];

fitStore = [];

bestThresholdAmongTrials = [];

bestFitnessAmongTrials = 0;

tempBestFitnessAmongTrials = 0;

fastestGenerationForBestFitness = 0;

for aTrial = 1:numTrials  

tic;

tempFitStore = [];

vBeta = masterBeta;%variable beta

fprintf('Trial: %d\n', aTrial);

X = floor(minThresh + (maxThresh - minThresh) * rand(thresh, population));

U = X;

generationAtBestFit = [0 0];%stores generation and best fitness

spaceSize = size(searchSpace, 1);

totalPixels = sum(searchSpace);

normProba = searchSpace ./ totalPixels;%normalized probabilities

if thresh < 1 || thresh > spaceSize, disp('Thresholds should be in a range of 1 to 256');return;end

%-----Get an initial Fitness

[fitnessX, X] = OtsuFitness(X, spaceSize, totalPixels, normProba);

[val, fittest] = max(fitnessX);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么球的表面积不能用周长积分而体积可以用面积积分?

问题描述&#xff1a; 将面积从最底下一层层叠到最上面可以得到球体积的正确公式 但是将周长从最底下一层层叠到最上面会得到错误结果&#xff0c;错误结果的几何意义是什么&#xff1f;以及是在什么地方积错了&#xff1f; 解答一&#xff1a; 首先&#xff0c; ∫−RR2πR2…

计算机研究生就业方向之去央企(国企)信息化部门

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么&#xff0c;如果你只是转码&#xff0c;那么你不一定要考研&#xff0c;至少以下几个职位研究生是没有啥优势的&#xff1a; 1&#xff0c;软件测试工程师&#xff08;培训一下就行&#xff09; 2&#xff0c;前…

C语言:星期一问题

题目需求 整个20世纪&#xff08;1901年1月1日至2000年12月31日之间&#xff09;&#xff0c;一共有多少个星期一&#xff1f; (不要告诉我你不知道今天是星期几哈) 请用一段程序实现了这一功能。 算法思路 判断1901年1月1日到2000年12月31的每一天是星期几&#xff0c;如果是星…

前端开发:JS中关于正则表达式的使用汇总

前言 在前端开发过程中&#xff0c;关于正则表达式的使用也是必备技能&#xff0c;尤其是在实际业务需求的时候&#xff0c;需要处理一些不能按照正常语句操作的逻辑&#xff0c;如前端开发中的字符匹配、参数处理等都需要正则表达式来匹配截取处理。虽然正则表达式在程序开发中…

01-18-spark-入门简介-部署入门

01-spark-入门简介&#xff1a; Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 一次性数据计算&#xff1a;框架在处理数据的时候&#xff0c;从存储设备中读取数据&#xff0c;进行逻辑操作&#xff0c;然后将结果存储到介质中。 Hadoop 的 MR 框架和 S…

直播技术分享:千万级直播系统后端架构设计的方方面面

1、引言 本文以TFBOYS“日光旅行”七周年这场直播演唱会为案例&#xff0c;为你分享大型直播系统后端架构设计的方方面面&#xff0c;包括&#xff1a;基本架构、稳定性保障、安全性障、监控报警、应急预案等技术范畴。 案例中的这次演唱会采用了在线实时互动及演唱会现场的多…

【能效管理】关于某项目配套渗滤液工程电能管理系统的设计和应用

摘要&#xff1a; 介绍老港综合填埋场二期配套渗滤液工程电能管理系统&#xff0c;采用智能电力仪表采集配电现场的各种电参量。系统采用现场就地组网的方式&#xff0c;组网后通过现场总线通讯并远传至后台&#xff0c;通过Acrel-3000电能管理系统实现配电回路用电的实时监控…

服开与编排,老兵新传

前段时间&#xff0c;有同学问&#xff1a;编排与服开是什么关系&#xff1f;现在运营商都建设编排系统&#xff0c;那是不是服务开通以后就退出 OSS 舞台了&#xff1f;为什么会出现编排&#xff1f;这些问题对于行业老兵来说感慨万千&#xff0c;而对于新兵来说就要通过追溯其…

深度学习炼丹-超参数设定和网络训练

前言网络层内在参数 使用 3x3 卷积使用 cbr 组合尝试不同的权重初始化方法 图片尺寸与数据增强batch size 设定 背景知识batch size 定义选择合适大小的 batch size学习率和 batch size 关系 学习率参数设定 背景知识什么是学习率如何设置学习率 优化器选择 优化器定义如何选择…

中国制造构建全球产业链,是关于价值链的创新

经过20天激战&#xff0c;世界杯最终四强全部出炉。 与此同时&#xff0c;绿茵场外的品牌营销大战也即将步入终章。据伦敦数据分析咨询公司GlobalData表示&#xff0c;中国赞助商对卡塔尔世界杯总赞助金额为13.95亿美元&#xff0c;蝉联赞助金额榜单的首位。一时间&#xff0c…

一、Docker简介与安装

1、Docker是什么&#xff1f;为什么会出现Docker 假定您在开发一个购物商城&#xff0c;您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外&#xff0c;您的…

中国新闻周刊专访:大数据时代,普通人的信息安全如何保证?

技术是一个放大器 本质应该更好地服务人们的生产生活 近年来&#xff0c;随着大数据运用的日益频繁&#xff0c;技术日益成熟&#xff0c;隐私数据的泄露已到了触目惊心的状态。据不完全统计&#xff0c;2022年以来隐私数据泄露的各类案例多达数百万起&#xff0c;受隐私数据泄…

P4 PyTorch Broadcasting

前言&#xff1a; 维度变换 目录&#xff1a; Broadcasting 流程 broadcasting-able code参考: 课时24 Broadcasting-1_哔哩哔哩_bilibili 一 Broadcasting 流程 分三步&#xff1a; i broadcasting 从最后一个维度开始,进行维度对齐 ii 最前面插入一个维度 iii 最后对…

【测绘程序设计】——地形图图幅号计算

为便于地形图测制、管理和使用,各种比例尺地形图通常需要按规定的大小进行统一分幅,并进行系统的编号。地形图的分幅可分为两大类:一是按经纬度进行分幅,称为梯形分幅法,一般用于国家基本比例尺系列的地形图;二是按平面直角坐标进行分幅,称为矩形分幅法,一般用于大比例…

地心地固坐标系WGS84经纬度与笛卡尔直角坐标系相互转换的推导、理解与代码实现(C++和matlab)

目录一、大地坐标系现状简析1.1 我国1.2 美国1.3 日本二、经纬度坐标&#xff08;L,B,H&#xff09;与直角坐标系坐标&#xff08;X,Y,Z&#xff09;相互转换2.1 正解&#xff08;L,B,H&#xff09;——>&#xff08;X,Y,Z&#xff09;2.1.1 数学推导2.1.2 C代码实现2.1.3 m…

文件描述符和缓冲区

文章目录文件操作符系统调用接口文件接口的简单实用实验一&#xff1a;打开文件写入信息实验二&#xff1a;read接口读取文件返回值和fd联想到数组下标OS怎么管理文件呢&#xff1f;先描述再组织。一切皆文件012的操作文件描述符的分配规则&#xff1a;输出重定向的原理。追加重…

Apache Kyuubi、Spark Thrift Server与Hive Server2

HiveServer2和Spark Thrift Server HiveServer2和Spark Thrift Server&#xff0c;两者其实都是提供一个常驻的SQL服务&#xff0c;用来对外提供高性能的SQL引擎能力&#xff0c;不过两者又有些偏差&#xff0c;主要是HS2是独立的Server&#xff0c;可组成集群&#xff0c;而S…

【进阶】C语言第三课:升级你的指针(2)

目录 &#x1f347;前言&#x1f347;&#xff1a; 一、数组参数&#x1f920;&#xff1a; 1.一维数组传参&#x1f348;&#xff1a; 2.二维数组传参&#x1f349;&#xff1a; 二、指针参数&#x1f929;&#xff1a; 1.一级指针传参&#x1f34a;&#xff1a; 2.二级指针…

【论文写作】课程总结

文章目录1、前言2、概述3、摘要与关键字4、引言5、相关工作6、理论7、实验8、总结1、前言 《论文写作》不仅是本人认为的在本学期收获较大的一门&#xff0c;也是最重要的课程之一。因为作为研究生&#xff0c;论文是必不可少的一部分。论文是就自己研究方向中所得到的成果的一…

网络设备的运行隐患怎么排除?日常的例行维护绝对不能少,收藏本文,轻松拿捏各种场景!

设备稳定运行一方面依赖于完备的网络规划&#xff0c;另一方面&#xff0c;也需要通过日常的维护发现并消除设备的运行隐患。 日常维护怎么才能进行呢&#xff1f;有哪些必要的步骤呢&#xff1f; 记住这五步&#xff1a; 1、设备环境检查 设备运行环境正常是保证设备正常运…