博客
关于我
matlab练习程序(RGB2HSV、HSV2RGB)
阅读量:802 次
发布时间:2023-02-07

本文共 1603 字,大约阅读时间需要 5 分钟。

色相、饱和度、明度的相互转换

在图像处理领域,色相、饱和度和明度是三个重要的颜色特性参数,它们之间具有密切的关联关系。通过对这些参数的转换和计算,我们可以更好地理解图像的颜色特性。

以下是基于MATLAB的代码解释:

清除所有图形窗口并重置颜色缓冲区:

clear all;close all;clc;img = imread('lena_color.jpg');  % 读取图像img = mat2gray(img);  % 将图像转换为灰度图像

获取图像的RGB值:

[m n dim] = size(img);  % 获取图像的大小imshow(img);  % 显示图像R = img(:,:,1);  % 获取红色通道G = img(:,:,2);  % 获取绿色通道B = img(:,:,3);  % 获取蓝色通道

色相转换:

H = zeros(m, n);  % 初始化色相矩阵S = zeros(m, n);  % 初始化饱和度矩阵V = zeros(m, n);  % 初始化明度矩阵for i = 1:m    for j = 1:n        r = R(i, j);        g = G(i, j);        b = B(i, j);                MAX = max([r, g, b]);  % 获取颜色通道的最大值        MIN = min([r, g, b]);  % 获取颜色通道的最小值                if MAX == MIN            H(i, j) = 0;  % 当颜色单调时,色相为0        elseif MAX == r && g > b            H(i, j) = 60 * (g - b) / (MAX - MIN);  % 计算色相角        elseif MAX == r && g < b            H(i, j) = 60 * (b - g) / (MAX - MIN);  % 计算色相角        elseif MAX == g            if b > r                H(i, j) = 60 * (b - r) / (MAX - MIN);  % 计算色相角            else                H(i, j) = 60 * (r - b) / (MAX - MIN);  % 计算色相角            end        elseif MAX == b            if r > g                H(i, j) = 60 * (r - g) / (MAX - MIN);  % 计算色相角            else                H(i, j) = 60 * (g - r) / (MAX - MIN);  % 计算色相角            end        end                % 饱和度计算(该部分代码未在示例中完整展示)        % V(i, j) = 1 - (MIN / MAX);  % 饱和度计算公式示例            endend

饱和度计算:

% 以下为饱和度计算的示例代码片段V(i, j) = 1 - (MIN / MAX);  % 饱和度计算公式

色相、饱和度和明度之间的关系:

  • 色相(H)反映了颜色的颜色特性。
  • 饱和度(S)描述了颜色纯度,饱和度越高,颜色越纯。
  • 明度(V)表示颜色亮度,明度越高,颜色越亮。

通过上述代码,我们可以清晰地看到色相、饱和度和明度之间的计算关系。这三者共同描述了图像的颜色特性,是图像处理和计算中的重要参数。

转载地址:http://gfyfk.baihongyu.com/

你可能感兴趣的文章
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>
mysql 添加索引
查看>>
MySQL 添加索引,删除索引及其用法
查看>>
mysql 状态检查,备份,修复
查看>>
MySQL 用 limit 为什么会影响性能?
查看>>
MySQL 用 limit 为什么会影响性能?有什么优化方案?
查看>>
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>