MATLAB应用

news2024/11/27 21:51:23

目录

网站

智能图像色彩缩减和量化


网站


https://yarpiz.com/


智能图像色彩缩减和量化


        使用智能聚类方法:(a)k均值算法,(b)模糊c均值聚类(FCM)和(c)自组织神经网络,使用 RGB 和 HSV 颜色编码来执行聚类任务。

file = uigetfile 打开一个模态对话框,其中列出了当前文件夹中的文件。用户可以在这里选择或输入文件的名称。如果文件存在并且有效,当用户点击打开时,uigetfile 将返回文件名。如果用户点击取消或窗口关闭按钮 (X),uigetfile 将返回 0

当用户点击打开时,[file,path] = uigetfile 将返回文件的名称和路径。如果用户点击取消或窗口关闭按钮 (X),uigetfile 将为两个输出参数都返回 0

[file,path,indx] = uigetfile 将返回在对话框中选择的筛选器的索引。

___ = uigetfile(filter) 指定文件扩展名,根据该扩展名筛选对话框中显示的文件。可以将此语法与上述语法中的任何输出参数结合使用。

pause(n) 暂停执行 n 秒,然后继续执行。必须启用暂停,此调用才能生效。

pause(state) 启用、禁用或显示当前暂停设置。

oldState = pause(state) 返回当前暂停设置并如 state 所示设置暂停状态。例如,如果已启用暂停功能,oldState = pause('off') 会在 oldState 中返回 'on' 并禁用暂停。

提取rgb

img=imread(FullFileName);
img=im2double(img);

R=img(:,:,1);
G=img(:,:,2);
B=img(:,:,3);

X=[R(:) G(:) B(:)];
Z=X;

 strcmpi - 比较字符串(不区分大小写)
    此 MATLAB 函数 将比较 s1 和 s2,并忽略字母大小写差异。如果二者相同,函数将返回 1(true),否则返回 0 (false)。如果文本的大小和内容相同,则它们将视为相等,不考虑大小
写。返回结果 tf 的数据类型为 logical。

kmeans

idx = kmeans(X,k) 执行 k 均值聚类,以将 n×p 数据矩阵 X 的观测值划分为 k 个聚类,并返回包含每个观测值的簇索引的 n×1 向量 (idx)。X 的行对应于点,列对应于变量。

默认情况下,kmeans 使用欧几里德距离平方度量,并用 k-means++ 算法进行簇中心初始化。

idx = kmeans(X,k,Name,Value) 进一步按一个或多个 Name,Value 对组参数所指定的附加选项返回簇索引。例如,指定余弦距离、使用新初始值重复聚类的次数或使用并行计算的次数。

prod

B = prod(A) 返回 A 的数组元素的乘积。

  • 如果 A 是向量,则 prod(A) 返回元素的乘积。

  • 如果 A 为非空矩阵,则 prod(A) 将 A 的各列视为向量,并返回一个包含每列乘积的行向量。

  • 如果 A 为 0×0 空矩阵,prod(A) 返回 1

  • 如果 A 为多维数组,则 prod(A) 沿第一个非单一维度运算并返回乘积数组。此维度的大小将减少至 1,而所有其他维度的大小保持不变。

        如果输入 A 为 single 类型,则 prod 会计算并将 B 以 single 类型返回。如果为任何其他数值和逻辑数据类型,prod 会计算并将 B 以 double 类型返回。

B = prod(A,'all') 计算 A 的所有元素的乘积。


clc;
clear;
close all;

%% Select Image

Filter={'*.jpg;*.jpeg;*.png'};

[FileName, FilePath]=uigetfile(Filter);
pause(0.01);

if FileName==0
    return;
end

FullFileName=[FilePath FileName];

%% Load Image Data

Choices = {'RGB', 'HSV'};

ANSWER = questdlg('Select the color coding:', ...
                  'Color Coding', ...
                  Choices{1}, Choices{2}, ...
                  Choices{1});
pause(0.01);

img=imread(FullFileName);
img=im2double(img);

R=img(:,:,1);
G=img(:,:,2);
B=img(:,:,3);

X=[R(:) G(:) B(:)];
Z=X;

UseHSV = strcmpi(ANSWER, 'HSV');

if UseHSV
    Y=rgb2hsv(X);
    W=[3 1 2];
    for l=1:numel(W)
        Y(:,l)=Y(:,l)*W(l);
    end
    Z=Y;
end

%% Number of Desired Colors

ANSWER = inputdlg('Number of desired colors:','Color Reduction',1,{'25'});
pause(0.01);

nColor = str2double(ANSWER{1});

%% Select Algorithm

Choices = {'k-Means Clusterin', 'Fuzzy Clustering (FCM)', 'SOM Network'};

ANSWER = questdlg('Select the clustering algorithm:', ...
                  'Color Coding', ...
                  Choices{1}, Choices{2}, Choices{3}, ...
                  Choices{1});
pause(0.01);

UseKMeans = strcmpi(ANSWER, Choices{1});
UseFCM = strcmpi(ANSWER, Choices{2});
UseSOM = strcmpi(ANSWER, Choices{3});

%% Perform Clustering

if UseKMeans
    Method = 'k-Means Clustering';
    Options.MaxIter=1000;
    [IDX, C]=kmeans(Z,nColor,'options',Options);
end

if UseFCM
    Method = 'Fuzzy Clustering (FCM)';
    [C, U]=fcm(Z,nColor);
    [MaxU, IDX]=max(U);
end

if UseSOM
    Method = 'SOM Neural Network';
    NetSize=[floor(sqrt(nColor)) ceil(sqrt(nColor))];
    nColor = prod(NetSize);
    [IDX, C]=SOM(Z,NetSize);
end

%% Create Reduced Image

Z2=C(IDX,:);

if UseHSV
    Y2 = Z2;
    for l=1:numel(W)
        Y2(:,l)=Y2(:,l)/W(l);
    end
    X2=hsv2rgb(Y2);
else
    X2=Z2;
end

R2=reshape(X2(:,1),size(R));
G2=reshape(X2(:,2),size(G));
B2=reshape(X2(:,3),size(B));

img2=zeros(size(img));
img2(:,:,1)=R2;
img2(:,:,2)=G2;
img2(:,:,3)=B2;

%% Show Results

figure;

subplot(1,2,1);
imshow(img);
title('Original Image');

subplot(1,2,2);
imshow(img2);
title(['Color Reduced Image (k = ' num2str(nColor) ') using ' Method]);

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

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

相关文章

Mysql—存储过程

简介 存储过程就是类似于MySQL触发器,经过事先编写好相应语句,通过编译后存储在数据库上。触发器不需要手动调用即可实现相应SQL功能。MySQL存储过程,需要自己去调用得到相应的结果。 语法 创建存储过程 CREATE DEFINER CURRENT_USER PR…

git---->团队开发神器,一篇文章直接掌握

git---->团队开发神器,一篇文章直接掌握 一 学习git的原因概念版本的概念1 版本控制软件的基础功能2 集中式版本控制软件3 分布式版本控制 二 git的安装三 GitHub Desktop的使用四 团队操作五 中央服务器--github从github上下载文件到本地仓库传输文件 六 国内中…

chatgpt赋能python:Python如何实现自增

Python如何实现自增 在Python编程中,自增是一种非常常用的操作,它可以让我们在循环、计数等场景中更加方便地进行操作。实际上,在Python中,实现自增非常简单,本文将介绍Python中常用的自增操作,并分享自增…

时间复杂度 空间复杂度

概览 时间复杂度与空间复杂度的作用是在衡量一个算法的优劣性,以及在二者之间进行权衡,寻找二者的平衡点。 时间复杂度是指执行算法所需时间的增长率,而空间复杂度则是指执行算法所需存储空间的增长率。 高时间复杂度的算法可能需要在短时间…

LayUI前框框架普及版

LayUI 一、课程目标 1. 【了解】LayUI框架 2. 【理解】LayUI基础使用 3. 【掌握】LayUI页面元素 4. 【掌握】LayUI内置模块二、LayUI基本使用 2.1 概念 layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架&#xff0…

Nginx+Tomcat 负载均衡、动静分离

目录 一、Nginx代理服务器概念 1.正向代理 2.反向代理 二、动静分离 三、负载均衡 四、Nginx七层代理实验 1.部署Nginx服务 2. 部署Tomcat服务 2.1在192.168.88.50 虚拟机上部署双实例 2.2在192.168.88.60 上部署Tomcat服务器3 3.动静分离配置 3.1Tomcat1 server 配…

RecyclerView的回收缓存均由内部类Recycler完成

1. RecyclerView的三级缓存 通常在RecyclerView中存在着四级缓存,从低到高分别为: 可直接重复使用的临时缓存(mAttachedScrap/mChangedScrap) mAttachedScrap中缓存的是屏幕中可见范围的ViewHoldermChangedScrap只能在预布局状态…

Material—— 常用材质节点

目录 Coordinates Absolute World Position Actor Position Object Position Utility SphereMask Coordinates 表示坐标类的节点; Absolute World Position 别名为WorldPosition,此节点输出当前像素在世界空间内的位置;常用于查找相机到…

作为过来人:有什么话想对当年高考前的自己说

目录 引言千人千面-有什么话想对当年高考前的自己说怀念高中,数学太难多考一分,人生就会不一样一定要勇敢,不止高考别把高考不当回事6的我没话说想到啥就去做别选**大学/专业强烈想出名的拖鞋哥英语全选C,理综要细心会的全做对当时…

Spring - 注解开发

文章目录 Spring的注解开发一、Bean 基本注解开发1.1 Component Bean的配置1.2 其他注解配置Bean1.3 Component 衍生注解 二、Bean依赖注入注解开发2.1 Value2.2 Autowired2.3 Qualifier2.4 Resource 三、非自定义注解开发3.1 无参非自定义注解开发3.2 有参非自定义注解开发 四…

Domino 14新内核

大家好,才是真的好。 还记得去年,我们不断跟进而放出的Notes/Domino产品路线图吗?是的,HCL正在按照产品路线图稳步推进,而很多人提出的idea,也逐步加入到产品中,等会我们也会聊到。 我最喜欢这…

MySQL安装-Linux版

MySQL-Linux版安装 1、准备一台Linux服务器 云服务器或者虚拟机都可以; Linux的版本为 CentOS7; 2、 下载Linux版MySQL安装包 下载地址 3、上传MySQL安装包 使用FinalShell软件上传即可! 4、 创建目录,并解压 mkdir mysqltar -xvf my…

【Web服务器】Nginx网站服务

文章目录 一、Nginx 概述1.什么是 Nginx2.Nginx 的特点3.Nginx 应用场景 二、Nginx 服务基础1.编译安装 Nginx 服务1.1 布置环境1.2 安装依赖包1.3 创建运行用户、组1.4 编译安装 2.Nginx 的运行控制2.1 检查配置文件2.2 启动、停止 Nginx2.3 日志分割以及升级 Nginx 服务2.4 添…

调用腾讯API实现图片滤镜

目录 1. 作者介绍2. 图像滤波介绍3. 实验过程及结果(附完整代码)3.1 准备工作3.2 实验代码3.3 实验结果 1. 作者介绍 班梦威,男,西安工程大学电子信息学院,2022级研究生 研究方向:模式识别与人工智能 电子…

企业如何有效制定企业信息化发展规划?(附信息化模板)

如何有效制定企业信息化发展规划?企业信息化发展规划是一个宏大而又复杂的命题,这篇来掰开揉碎讲一下企业应该如何有效制定信息化发展规划。 这里不给大家灌鸡汤,也不给大家画大饼,就说些实在的。 如果你想找经验方法&#xff0…

Lambda表达式与函数式编程

文章目录 函数式编程——Stream流概述为什么学?函数式编程思想 Lambda表达式概述Lambda表达式的前身省略规则 Stream流概述案例数据准备创建流中间操作终结操作reduce归并注意事项 Optional概述创建对象安全消费值获取值安全获取值过滤数据转换 函数式接口常用的默认方法 方法…

APPSCAN扫描https协议的网站证书安装过程(Googel浏览器)

【1】首先打开我们的appscan,点击外部设备。 【2】点击记录代理配置 【3】弹出选项后,在记录代理下我们可以看到AppScan SSL证书,这点我们点击导出 【4】这里你选择一个合适的位置,点击保存 【5】保存后的文件是一个zip压缩包,…

GPT4和Claude100k测试使用

总述 程序员们通常使用大量代码,找到一个能够使用Claude100k和GPT4的,长代码优化有希望啦! Liaobots:支持GPT4和Claude100k 不定期供应GPT4 32k,支持最多24000字符请求 大家有时候会觉得GPT4 8k不够用,…

TensorFlow入门知识

个人理解 TensorFlow是集齐了很多深度学习相关的算法的框架,你可以利用他搭建自己的神经网络模型。对于开发者来说,告诉TensorFlow一批特征数据和最终的答案数据,让其通过一个神经网络模型进行训练,最终输出模型。模型将应用于应…

DSP-OMAPL-138 RTOS开发(1)——报错总结

1 git的作用 第一个问题,也不算错误:工程文件会有一个名称会有一个横着的箭头并且文件名前面都有问好,不算错误(算个发现),但是发现将git文件删去即可,如果没有,右击工程文件->选…