hsi和rgb的转换,以及hsi和rgb的补色变换 matlab代码
版权声明:<–本博客所有内容均为自己在学习工作中的总结、摘录等-- --转载请注明出处-- --如有侵权请联系删除–>https://blog.csdn.net/ai359005521/article/details/90246016
如果有用的话帮忙点个赞就好
rgb转为hsi的代码
function hsi = RGB2HSI(rgb)
rgb = im2double(rgb);
r = rgb(:, :, 1);
g = rgb(:, :, 2);
b = rgb(:, :, 3); num = 0.5*((r - g) + (r - b));
den = sqrt((r - g).^2 + (r - b).*(g - b));
theta = acos(num./(den + eps)); H = theta;
H(b > g) = 2*pi - H(b > g);
H = H/(2*pi); num = min(min(r, g), b);
den = r + g + b;
den(den == 0) = eps;
S = 1 - 3.* num./den; H(S == 0) = 0; I = (r + g + b)/3; hsi = cat(3, H, S, I);
hsi转为rgb的代码
function rgb = HSI2RGB(hsi)
H = hsi(:, :, 1) * 2 * pi;
S = hsi(:, :, 2);
I = hsi(:, :, 3); R = zeros(size(hsi, 1), size(hsi, 2));
G = zeros(size(hsi, 1), size(hsi, 2));
B = zeros(size(hsi, 1), size(hsi, 2)); idx = find( (0 <= H) & (H < 2*pi/3));
B(idx) = I(idx) .* (1 - S(idx));
R(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx)) ./ cos(pi/3 - H(idx)));
G(idx) = 3*I(idx) - (R(idx) + B(idx)); idx = find( (2*pi/3 <= H) & (H < 4*pi/3) );
R(idx) = I(idx) .* (1 - S(idx));
G(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 2*pi/3) ./ cos(pi - H(idx)));
B(idx) = 3*I(idx) - (R(idx) + G(idx)); idx = find( (4*pi/3 <= H) & (H <= 2*pi));
G(idx) = I(idx) .* (1 - S(idx));
B(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 4*pi/3) ./cos(5*pi/3 - H(idx)));
R(idx) = 3*I(idx) - (G(idx) + B(idx)); rgb = cat(3, R, G, B);
rgb = max(min(rgb, 1), 0);
rgb补色和hsi补色的代码
x = imread('d:/12.tif');
hsi = RGB2HSI(x);
rgb_buse = 255 - x;
x_h = hsi(:,:,1); %提取红色分量的矩阵
x_s = hsi(:,:,2); %提取绿色分量的矩阵
x_i = hsi(:,:,3); %提取蓝色分量的矩阵
% zero = zeros(x); %初始化与图像大小相同的通道为一的零矩阵
x_h_1 = x_h;
x_s_1 = x_s;
x_i_1 = 1-x_i;
[M,N]=size(x_h_1);
for i = 1:Mfor j =1:Nif(x_h_1(i,j)<=0.5)x_h_1(i,j)=0.5+x_h_1(i,j);elsex_h_1(i,j)=-0.5+x_h_1(i,j);end% I2(i,j) = I(i,j); %对图像进行填充end
endhsi_buse = cat(3,x_h_1,x_s_1,x_i_1); %蓝色分量图hsi_buse_rgb = HSI2RGB(hsi_buse);
subplot(1,2,1),imshow(rgb_buse),title('Red component');
subplot(1,2,2),imshow(hsi_buse_rgb),title('Green component')
hsi和rgb的转换,以及hsi和rgb的补色变换 matlab代码相关推荐
- 一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示
数字图形处理实验记录 实验一 :一幅RGB彩色原图和其三个分量的显示,RGB图转换成HSI的显示 转换原理:采用圆锥模型公式 测试步骤: Matlab转化函数: function HSI = RGB2 ...
- rgb hsl转换_python中的rgb hsl转换
rgb hsl转换 The most common ways of encoding colour values are RGB (red, green and blue) and HSL (hue, ...
- 【颜色空间转换大集合】RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbCr,RGB到XYZ颜色转换matlab代码的Demo,含详细的解释
废话不说,先上图, 实现方式:matlab 实现功能: 实验目标 了解图像颜色空间的转换关系. 了解图像的文件结构. 实验内容 完成如下颜色空间的转换.(4 Points) RGB -> YIQ ...
- 【RGB=HSI】单片机控制RGB单灯与HSI互转算法
最近在做一个RGB补光灯的小玩意儿,项目上有一个OLED屏幕显示当前灯光的HSI参数,对于HSI我是完全陌生的,由于时间紧任务重,我也没想过去百度一下HSI是个啥,直接拿着样品测试了一组参数,自己去演 ...
- 色彩空间与色彩模型 RGB/CMYK/YCbCr/HSB/HSI/HSV
色彩空间与色彩模型都是一种用数值表示颜色的数学模型. 其中色彩空间侧重于色彩的标识,色彩模型侧重色彩的生成,但没有任何一种模型可以解释所有的色彩问题. 从面对对象主要分为两大类模型:面对硬件设备的色彩 ...
- RGB转HSL、HSI
RGB<->(HSL) RGB→HSL的算法描述 步骤1: 把RGB值转换成[0,1]中数值 例:R=0.83, G=0.07, B=0.07 步骤2: 找出R, G和B中的最大值 本例中 ...
- 【DSP开发】【VS开发】YUV与RGB格式转换
[视频处理]YUV与RGB格式转换 YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式. 因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式. RGB与 ...
- GPU 实现 RGB -- YUV 转换 (OpenGL)
GPU 实现 RGB -- YUV 转换 前言 RGB --> YUV 转换的公式是现成的,直接在 CPU 端转换的话,只需要遍历每个像素,得到新的 YUV 值,根据其内存分布规律,合理安排分布 ...
- 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图
一. 使用cvCvtColor函数将RGB颜色空间转换到HSV颜色空间 所需函数: 1.cvCvtColor 函数功能:颜色空间转换 函数原型: void cvCvtColor( const CvAr ...
最新文章
- 软件测试人员用python_【答知友问】软件测试人员能用python做哪些事情?
- android封装多肽,深度探索C++对象模型之(四)...-Android.animation cts fail-Rails helper_169IT.COM...
- CentOS下创建配置RAID1
- 屏幕录像专家详细安装教程
- SAP云平台Extension Factory和微软Azure上的Lambda Function
- FFMpeg中apiexample.c例子分析——解码分析
- php设计模式之责任链模式
- python描述符与实例属性_Python 中的属性访问与描述符
- android 7.1 支持哪些 cpu,锤子新机坚果Pro配置放出:骁龙626处理器、Android 7.1.1系统...
- 前端周刊第58期:送你 3 道面试题
- 苹果手机如何减少后台流量
- 在inDesign软件中如何覆盖母版页项目?
- 苹果 / Apple iCloud 教育版 200GB 云盘账号自助注册教程
- Windows系统,文件和文件夹命名规则
- 最低报酬率计算机公式,股票报酬率计算公式
- html5 img圆角,用 CSS3 给 图片添加圆角
- 锆石FPGA---verlog语法篇
- 3D数据基础——向量介绍与3D向量类的实现
- IDEA中 Maven name group、artifact、package区别
- Uber vs. Lyft