知名企业网站分析 比较评估,网址导航下载到桌面,怎样建设国外网站,吉林电商网站建设公司哪家好目录
1. 需求分析
2. 技术分析
3. 程序代码 1. 需求分析 日常工作、研究、学习当中#xff0c;往往需要对图片进行处理。其中图片重新着色、渲染是非常常见的。比如说去掉或则更换证件照底色#xff1b;去掉遥感图像中黑边……为解决此类问题#xff0c;而编写此代码。
…目录
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(R20 G20 B20); % 索引找出被替换颜色的范围
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)%说明
% 图像颜色转换
% 函数作用用于将图中某种类颜色转化成另一种颜色
%
% 作者胡礼珍
% 单位厦门大学联合遥感接收站
% 邮件hulizhenxmu.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(ROld_Color(1,1) GOld_Color(1,2) BOld_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(ROld_Color(1) GOld_Color(2) BOld_Color(3));elseif row 2 col 3 % 2.2 当为2×3矩阵时if Old_Color(1,:)Old_Color(2,:) % 第一行元素必须大于第二行index find(ROld_Color(1) ROld_Color(2) ...GOld_Color(3) GOld_Color(4) ...BOld_Color(5) BOld_Color(6));elseerrordlg(输入参数Old_Color错误,第一行需全部大于第二行,输入错误);return;endelseerrordlg(输入参数Old_Color错误,矩阵大小不对,输入错误);return;end
else % 3. 其它类型字符串errordlg(输入参数Flag_C错误,不是yes或no,输入错误);return;
end% 索引找出被替换颜色的范围
% index find(ROld_Color(1) GOld_Color(2) BOld_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); 不足之处敬请斧正 转载请说明出处
路漫漫其修远兮吾将上下而求索。