利用Matlab替换图片部分颜色
目录
1. 需求分析
2. 技术分析
3. 程序代码
1. 需求分析
日常工作、研究、学习当中,往往需要对图片进行处理。其中图片重新着色、渲染是非常常见的。比如说去掉或则更换证件照底色;去掉遥感图像中黑边……为解决此类问题,而编写此代码。
2. 技术分析
图片处理主要其中有两个重要步骤:a.提取目标位置,获取索引;b.着色、渲染等处理;本代码也是按照这两个步骤来写的:a.利用find函数提取目标,获取其索引;b. 再根据索引,进行着色渲染处理。find函数用法如下:
find - 查找非零元素的索引和值此 MATLAB 函数 返回一个包含数组 X 中每个非零元素的线性索引的向量。k = find(X)k = find(X,n)k = find(X,n,direction)[row,col] = find(___)[row,col,v] = find(___)
3. 程序代码
根据技术分析,进行编程。本人在网上找到一段相关代码,并基于此进行进一步编程。源代码如下:
clear;close all;clc;image = imread('测试.JPG'); % 读取图像
figure('Name','原图')
imshow(image); % 显示
R = image(:,:,1); % 红色
G = image(:,:,2); % 绿色
B = image(:,:,3); % 蓝色index = find(R<20 & G<20 & B<20); % 索引,找出被替换颜色的范围
R(index) = 255; % 红色通道赋值
G(index) = 255; % 绿色通道赋值
B(index) = 255; % 蓝色通道赋值
Out_Image(:,:,1) = R; % 输出图像红色通道
Out_Image(:,:,2) = G; % 输出图像绿色通道
Out_Image(:,:,3) = B; % 输出图像蓝色通道
figure('Name','颜色改变之后的图')
imshow(Out_Image); % 显示输出图像
上面这段代码来自:利用matlab代码怎么将黑色变为白色,而红色不变 – MATLAB中文论坛
本人将这个功能实现整合成一个函数Color_Con,必输输入侧参数有照片路径,可选参数有所替换的(某种或某类)颜色、需要赋予的新颜色以及输出的文件名,本人在程序中详细介绍了其用法,并对代码进行详细明了的注释,不懂之处可以咨询。代码如下:
function Color_con(Image_Name,Old_Color,New_Color,Flag_C,varargin)%==================================说明====================================
% 图像颜色转换
% 函数作用:用于将图中某种(类)颜色转化成另一种颜色
%
% 作者:胡礼珍
% 单位:厦门大学联合遥感接收站
% 邮件:hulizhen@xmu.edu.cn
%
% 输入:
% Image_Name 彩色图像(必须的,灰白图像不行)
% Old_Color 需要被替换的颜色,必须是1×3矩阵,或者是2×3矩阵;
% 1.当为1×3矩阵,若Flag_C为yes,则表示替换某种颜色,
% Flag_C为no时,则表示替换
% ([0:Old_Color(1)],[0:Old_Color(2)],[0:Old_Color(3)]);
% 2. 当为1×3矩阵,若Flag_C为yes,则表示替换某种Old_Color(1,:)颜色,
% Flag_C为no时,则表示替换:
% ([Old_Color(2,1):Old_Color(1,1)],
% [Old_Color(2,2):Old_Color(1,2)],
% [Old_Color(2,3):Old_Color(1,3)]);
% 注:Old_Color(1,:)>=Old_Color(2,:) 必须为真才行
% New_Color 想要的颜色,具体的某一种颜色[R G B]
% Flag_C 用于判断被替换的颜色是某一类颜色还是某一种颜色,
% 默认为某一种颜色;
% 1. 如果Flag_C为“Yes”则表示改变某一种颜色;
% 2. 如果Flag_C为“N0”则表示改变某一类颜色
% 颜色范围为:
% ([0:Old_Color(1)],[0:Old_Color(2)],[0:Old_Color(3)]);
% 注:[a:b]表示值域:a≤x≤b
% % 输出:
% 无,但会生成一个修改后的图片
% 语法:
% Color_con(Image_Name,Old_Color,New_Color)
% Color_con(Image_Name,Old_Color,New_Color,Flag_C)
% 保存文件的格式有:
%--------------------------------------------------------------------------
% https://www.ilovematlab.cn/thread-574152-1-1.html
%==========================================================================
narginchk(3,4); % 输入参数个数必须是3-4个,否则报错
nargoutchk(0,0); % 输出参数个数必须是0个,否则报错if nargin == 3Flag_C ='yes'; % 如果只有三个输入,则默认Flag_C为yes
end
Image = imread(Image_Name); % 读取图像
figure('Name','原图')
imshow(Image); % 显示
R = Image(:,:,1); % 红色
G = Image(:,:,2); % 绿色
B = Image(:,:,3); % 蓝色if Flag_C == "yes" % 1. Flag_C参数为yes,替换某一种颜色index = find(R==Old_Color(1,1) & G==Old_Color(1,2) & B==Old_Color(1,3));
elseif Flag_C == "no" % 2. Flag_C参数为no,替换某一类颜色[row,col]=size(Old_Color); % 计算矩阵大小if row == 1 && col ==3 % 2.1 当为1×3矩阵时;index = find(R<=Old_Color(1) & G<=Old_Color(2) & B<=Old_Color(3));elseif row == 2 && col ==3 % 2.2 当为2×3矩阵时;if Old_Color(1,:)>=Old_Color(2,:) % 第一行元素必须大于第二行index = find(R<=Old_Color(1) & R>=Old_Color(2) & ...G<=Old_Color(3) & G>=Old_Color(4) & ...B<=Old_Color(5) & B>=Old_Color(6));elseerrordlg('输入参数Old_Color错误,第一行需全部大于第二行','输入错误');return;endelseerrordlg('输入参数Old_Color错误,矩阵大小不对','输入错误');return;end
else % 3. 其它类型字符串errordlg('输入参数Flag_C错误,不是yes或no','输入错误');return;
end% 索引,找出被替换颜色的范围
% index = find(R==Old_Color(1) & G==Old_Color(2) & B==Old_Color(3));R(index) = New_Color(1); % 红色通道赋值
G(index) = New_Color(2); % 绿色通道赋值
B(index) = New_Color(3); % 蓝色通道赋值Out_Image(:,:,1) = R; % 输出图像红色通道
Out_Image(:,:,2) = G; % 输出图像绿色通道
Out_Image(:,:,3) = B; % 输出图像蓝色通道figure('Name','颜色改变之后的图')
imshow(Out_Image); % 显示输出图像
imwrite(Out_Image,'Out_Image.png');
end
调用上面函数的代码(主程序),三种用法都做了测试,具体如下:
clear;close all;clc;
% 第 1 种用法
Color_con('测试.png',[0 0 0],[255 0 0],'yes');
% 第 2 种用法
% Color_con('测试.png',[20,20,20],[255 0 0],'no');
% 第 3 种用法
% Color_con('测试.png',[20,20,20;0 0 0],[255 0 0],'no');
不足之处,敬请斧正!
转载请说明出处!
路漫漫其修远兮,吾将上下而求索。
利用Matlab替换图片部分颜色相关推荐
- 利用MATLAB实现图片切换动画效果详解
内容摘要:本博文介绍MATLAB图片切换动画效果的制作以及GIF文件保存,并结合具体代码详细解释.介绍了利用MATLAB编程进行几幅图片的轮流切换,切换时实现与幻灯片切换相似的炫酷的图片切换特效.其中 ...
- 利用MATLAB将图片转换成coe文件、TXT文件、mif文件、bin文件
利用MATLAB将图片转换成coe文件.TXT文件.mif文件 利用MATLAB将图片转换成coe文件 利用MATLAB将图片转换成txt文件 利用MATLAB将图片转换成mif文件 利用MATLAB ...
- 利用Matlab将图片转换成素描(简笔画)风格
题目: 利用Matlab将图片转换成素描(简笔画)风格 记得曾经看过别人的网络头像,是那种类似简笔画或素描的图片,一直以来都想做一个类似的头像,但始终不得要领.今天当我看到文献[1]中的图5.28时( ...
- matlab给图片添加颜色条
首先拖动图片至matlab命令行窗口,可以重新命名一下(命名为abb). 命令行输入"imshow(abb)",单击图片上方的"插入颜色栏",默认插入matla ...
- matlab给图片加颜色,Matlab中给figure添加图例(legend),标题(title)和颜色(color)...
在Matlab绘图过程中,尤其是需要将多个图绘制在相同的坐标轴中时,通常需要将不同的曲线设置成为不同的颜色.此外,为了直观,还需要给这张图标增添标题和图例.这篇文章展示了在Matlab的绘图窗口(fi ...
- 颜色矩特征提取matlab,求matlab彩色图片的颜色特征提取算法的代码,和纹理特征提取的? 爱问知识人...
其实学数字图像处理,关键的不是源代码(和一般编程还是有区别的,这个是经验之谈,其实一般博导未必会编程,但是你和他说说你的方法,他一般都能切中要害),而是你能理解基于概念及适用场所. 基于颜色.纹理.形 ...
- matlab 浮雕,基于MATLAB根据图片快速制作陶瓷浮雕的方法与流程
本发明属于陶瓷制作技术领域,尤其涉及基于MATLAB根据图片快速制作陶瓷浮雕的方法. 背景技术: 印模成形是传统的陶艺成形工艺之一,它具有制作简便.省时省力.对制作者没有过多的技艺要求的优点,因而直到 ...
- matlab判断图片颜色计算像素值
使用matlab对图像进行主体颜色判断 欢迎您的到来! 今天学习了利用matlab对一张图片的颜色主体进行判断并输出颜色 程序要求 从文件读取图片 调用函数裁剪出要判断的图片中小灯的颜色 具体步骤 一 ...
- matlab图片拼接变成白的,利用matlab实现对图片的拼接
利用matlab实现对图片的拼接 (图像处理的课堂小作业,简单地手打代码,有问题请联系) 1.效果图 (先看效果图,后思考怎么实现) 原图: 简单拼接: 再进一步操作,加了线: 2.原理 1.matl ...
最新文章
- numpy如何生成随机数
- 解决Jira和Confluence访问打开越来越缓慢问题
- kotlin dsl_Spring Webflux – Kotlin DSL –实现的演练
- san分布式共享文件系统_SAN网络存储共享软件全攻略剖析
- recyclerview item动画_这可能是你见过的迄今为止最简单的RecyclerView Item加载动画...
- MVVM中数据验证之 ViewModel vs. Model
- 一家贩卖8亿份个人简历的公司 现已人去楼空
- Linux的压缩相关命令(转载)
- gitlab merge request
- zip命令 – 压缩文件
- 项目整合管理——变更控制流程
- 深度学习笔记-----YOLOV4框架结构大讲解
- 学习笔记-NTLM中继
- kkFiewView代码分析(三)有关CAD文件的转换
- JavaScript 抢购茅台脚本 仅供学习
- 从入门到深入!java游戏口袋精灵
- 友豆火山CPG插件开发001-简介初识
- 【解决方案】SkeyeVSS综合安防平台在智慧高速公路隧道监控中的应用
- springboot +mybatisPlu控制台打印sql
- python爬虫获取双色球历史中奖纪录写入数据库