- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 HSI 色彩空间中绘制色轮。我得到的色轮有很宽的青色、黄色和品红色,看起来不对。我见过的所有其他色轮都具有最宽的波段红色、绿色和蓝色。
这就是 HSI 色轮的样子吗?还是我的数学错了?我已经尝试了我能找到的 HSI 到 RGB 的每个片段,并在书中查找了方程式。该方程式有很多变化,但当我画圆时,它们都会导致相同的结果。我唯一不同的是在最后夹紧 channel 。我的 Intensity 到处都是 1.0,Hue 是像素的角度(额外旋转了一点),Saturation 是到中心的距离的大小。
这是我将 HSI 转换为 RGB (Objective-C) 的困惑代码:
float r;
float g;
float b;
S = S > 1.0f ? 1.0f : S;
I = I > 1.0f ? 1.0f : I;
H = H > 1.0f ? H - 1.0 : H;
H = H * M_PI * 2.0;
H = fmod(H, M_PI * 2.0);
if(S==0.0f){
r = I;
g = I;
b = I;
} else{
if((H>=0.0) && (H<2.0*M_PI/3.0)){
b = (1.0f-S)/3.0f;
r = (1.0f + S*cosf(H) / cosf(M_PI/3.0-H))/3.0f;
g = 1.0f-r-b;
} else if((H>=2.0*M_PI/3.0) && (H<4.0*M_PI/3.0)){
H = H - 2.0f*M_PI/3.0f;
r = (1.0f-S)/3.0f;
g = (1.0f+S*cosf(H)/cosf(M_PI/3.0 - H))/3.0f;
b = 1.0f-r-g;
} else if ((H>=4.0*M_PI/3.0) && (H<2.0*M_PI)){
H= H-4.0f*M_PI/3.0f;
g = (1.0f-S)/3.0f;
b = (1.0f+S*cosf(H)/cosf(M_PI/3.0-H))/3.0f;
r = 1.0f-b-g;
}
}
if(r<0.0f)
r=0.0f;
if(g<0.0f)
g=0.0f;
if(b<0.0f)
b=0.0f;
float R = 3.0f*I*r;
float G = 3.0f*I*g;
float B = 3.0f*I*b;
if(R>1.0f)
R=1.0f;
if(G>1.0f)
G=1.0f;
if(B>1.0f)
B=1.0f;
最佳答案
阅读评论后,很明显限制 RGB 值会导致 CMY 偏差。降低强度消除了偏差,但仍然存在奇怪的 strip 问题,并且色轮看起来仍然不像其他人的色轮。这个结果在数学上是有道理的,但出于某种原因,没有人在任何有关 HSI 的书籍或在线信息中提及这些问题。人们展示的 HSI 色轮看起来像 HSV/B 色轮,但我仍然不知道他们在转换为 RGB 时如何得到那个结果。
解决方案:我切换到 HSV 颜色空间,事实证明它比 HSI 更符合我的要求。
关于c - 为什么我的 HSI 色轮看起来很奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25779324/
我正在尝试将 RGB 转换为 HSI 并将其还原。 (任务需要从头开始。) 在 RGB 到 HSI 的转换中,饱和度和强度输出都很好。但我似乎没有在 Hue 的制定中得到问题。示例输出: Red =
我在 HSI 中有两个颜色值(色相饱和度和强度),我想要一个代表两种颜色之间视觉差异的数字。色调是 0 到 360 之间的数字(含 0 和 360)。饱和度为 0 到 1,强度为 0 到 1。 让我们
尝试应用从 HSI 到 RGB 的转换时,我遇到了一些奇怪的问题,我正在尝试将其作为家庭作业的一部分。首先,这是我的原始图片: original image (抱歉链接,我没有发布图片的代表) 我正在
我正在尝试在 HSI 色彩空间中绘制色轮。我得到的色轮有很宽的青色、黄色和品红色,看起来不对。我见过的所有其他色轮都具有最宽的波段红色、绿色和蓝色。 这就是 HSI 色轮的样子吗?还是我的数学错了?我
我需要开发一种在 Hue Saturation Intensity 颜色空间中工作的计算机视觉算法,但是 OpenCV 似乎只支持 HSL 和 HSV。 除非 OpenCV 将 HSV 错误标记为 H
HSI 和 HSV 颜色空间有什么区别?我想使用 HSI 色彩空间,但我没有找到任何对 HSI 有用的 Material 。 HSI 和 HSV 一样吗? 最佳答案 HSI、HSV 和 HSL 都是不
我正在开展一个科学工作项目,我需要获得一些图像标准。 为此,我需要一个从普通 .JPEG .PNG 或 .BMP 图像生成 3 个直方图的代码。第一个直方图是色相直方图,第二个是饱和度直方图,第三个是
我正在尝试将给定图像的 RGB 转换为 HSI。但我似乎无法获得正确的输出。强度已经合适了。但是当 R + G + B 不等于 765 时,色相和饱和度始终给出相同的结果 -2147483648。我用
我一直在研究一种算法,在 python 3 中将 RGB 转换为 HSI,反之亦然,它使用 matplotlib 显示结果图像和每个 channel 。 问题是显示 HSI 到 RGB 结果图像:每个
因此,我一直在尝试为我正在进行的项目创建这种 RGB 到 HSI 的转换算法,但在执行过程中遇到了几个障碍。 到目前为止,我已将问题缩小为两个可能的问题: 程序不会检测 if 语句中比较的两个值中的哪
我想将 RGB 图像转换为 HSI,我发现了很多内置函数,如 rgb_to_hsv、rgb_to_hls 等。python 中是否有从 RGB 转换为 HSI 颜色模型的函数? 最佳答案 要将可用的
HSL 是否优于 HSI 和 HSV,因为它考虑了人类的感知。? 对于某些图像处理算法,他们说我可以使用这些颜色空间中的任何一个, 我不确定该选择哪一个。我的意思是,算法只关心你提供的 它们带有色调和
我正在尝试将 RGB 图像转换为 HSI,它具有三种不同的输出;色调、饱和度和强度。 这是我到目前为止所做的: #include "opencv2/core/core.hpp" #include "o
我正在尝试使用 visual c++ express 2010 将 RGB 图像转换为 HSI 颜色空间并打开 CV 2.3.1 并遇到编译错误问题。请任何人帮助我,我需要知道如何使用矩阵来保存 H、
我想使用 OpenCV 将图像从 Android 相机转换为 HSI 格式。问题是当我使用以下方法时 private Mat rgb2hsi(Mat rgbFrame) { Mat hsiFr
我是一名优秀的程序员,十分优秀!