相关疑难解决方法(0)

用于确定RGB颜色亮度的公式

我正在寻找某种公式或算法来确定给定RGB值的颜色的亮度.我知道它不能像将RGB值一起添加并且具有更高的总和更简单一样简单,但我有点不知道从哪里开始.

rgb image colors

366
推荐指数
11
解决办法
28万
查看次数

算法:如何使用RGB值从黄色渐变为黄色?

我想根据0到100之间的值显示颜色.在一端(100),它是纯红色,另一端(0),纯绿色.在中间(50),我希望它是黄色的.

而且我希望颜色逐渐从一个渐变到另一个,这样在75,颜色是半红色和半黄色等.

如何编程RGB值以反映这种衰落?谢谢.

c# algorithm rgb

53
推荐指数
7
解决办法
5万
查看次数

HSB vs HSL vs HSV

我正在将Color类作为c ++中非常基本的图形API的一部分.所以我决定看一下微软的.NET框架,发现他们的Color类有HSB的功能.

然后我开始研究,以确定我是否应该在课堂上提供HSB,HSL或HSV或所有这些.

所以,我有3个关于HSB,HSL,HSV的问题:

  1. HSB与HSL相同吗?

  2. 如果没有,为什么没有HSBL甚至HSBLV?

  3. 我发现有很多不同的计算这些值的方法,有人能告诉我最快的吗?

c++ hsl colors hsv hsb

36
推荐指数
4
解决办法
3万
查看次数

自动增强扫描图像

我正在开发一种自动增强扫描35毫米幻灯片的程序.我正在寻找一种增强对比度和消除色偏的好算法.该算法必须是完全自动的,因为将有数千个图像要处理.这些是直接来自扫描仪的几个样本图像,仅针对网络裁剪和缩小尺寸:

A_CroppedB_Cropped

我正在使用AForge.NET库,并尝试了HistogramEqualizationContrastStretch过滤器.HistogramEqualization有利于最大化局部对比度但总体上不会产生令人满意的结果.ContrastStretch更好,但由于它单独拉伸每个色带的直方图,它有时会产生强烈的色偏:

A_Stretched

为了减少颜色偏移,我UniformContrastStretch自己使用ImageStatisticsLevelsLinear类创建了一个过滤器.这对所有色带使用相同的范围,以较低的对比度为代价保留色彩.

    ImageStatistics stats = new ImageStatistics(image);
    int min = Math.Min(Math.Min(stats.Red.Min, stats.Green.Min), stats.Blue.Min);
    int max = Math.Max(Math.Max(stats.Red.Max, stats.Green.Max), stats.Blue.Max);
    LevelsLinear levelsLinear = new LevelsLinear();
    levelsLinear.Input = new IntRange(min, max);
    Bitmap stretched = levelsLinear.Apply(image);
Run Code Online (Sandbox Code Playgroud)

A_UniformStretched

虽然图像仍然很蓝,所以我创建了一个ColorCorrection首先计算图像平均亮度的滤镜.然后为每个颜色通道计算伽马校正值,使得每个颜色通道的平均值将等于平均亮度.均匀对比度拉伸图像具有平均值R=70 G=64 B=93,平均亮度为(70 + 64 + 93) / 3 = 76.计算伽玛值R=1.09 G=1.18 B=0.80,得到的非常中性的图像具有R=76 G=76 B=76预期的平均值:

A_UniformStretchedCorrected

现在,解决真正的问题...我想将图像的平均颜色校正为灰色有点过于剧烈,会使一些图像在外观上显得相当沉闷,就像第二个样本(第一个图像是均匀拉伸的,接下来是相同的图像颜色校正):

B_UniformStretched B_UniformStretchedCorrected

在照片编辑程序中手动执行色彩校正的一种方法是对已知中性色(白色/灰色/黑色)的颜色进行采样,并将图像的其余部分调整为该颜色.但由于这个例程必须是完全自动的,所以这不是一个选择.

我想我可以为我的ColorCorrection滤镜添加强度设置,因此强度为0.5会将平均值的一半移动到平均亮度.但另一方面,一些图像可能会做得最好,没有任何颜色校正.

有什么想法可以获得更好的算法吗?或者某些方法来检测图像是否有偏色或者只是有很多颜色,比如第二个样本?

c# algorithm image image-processing aforge

31
推荐指数
1
解决办法
3008
查看次数

是否有用于HSV到RGB的内置C#/ .NET系统API?

.NET框架中是否内置了将HSV转换为RGB的API ?我没有在System.Drawing.Color中看到一个方法,但是平台上没有一个方法似乎令人惊讶.

.net c# colors

28
推荐指数
3
解决办法
3万
查看次数

从RGB获得Hue的最快公式

如果给出的红色,绿色和蓝色值范围为0-255,那么获得色调值的最快计算是什么?该公式将以30fps(每秒920万次)用于640x480图像的每个像素,因此每一点速度优化都有帮助.

我见过其他公式,但我不满意他们涉及多少步骤.我正在寻找一个实际的公式,而不是内置的库函数.

rgb colors

23
推荐指数
3
解决办法
3万
查看次数

20
推荐指数
2
解决办法
2万
查看次数

如何轻松更改PNG图像的颜色?

我有PNG图像代表扑克牌.它们是标准颜色,俱乐部和黑桃是空白的,而钻石和红心是红色的.

我希望通过将俱乐部转换为绿色并将钻石转换为蓝色来创建一个4色套牌.

我不想重新绘制它们,但只是手工更换它们似乎很多工作,因为颜色不是全部"纯粹",而是在边缘附近分级.

我该怎么做?

png colors

15
推荐指数
3
解决办法
9万
查看次数

如何去饱和颜色?

我可能没有使用正确的颜色术语,但我希望基本上能够缩放类似于附加图片的颜色.我一直在寻找饱和度来做到这一点,因为看起来正确的版本只是左边的必须不那么饱和的版本.

在此输入图像描述

我正在尝试这个(我找到了),但它看起来并不正确:

Public Shared Function GetDesaturatedColor(color As Color) As Color
    Const kValue As Double = 0.01R

    Dim greyLevel = (color.R * 0.299R) + _
                    (color.G * 0.587R) + _
                    (color.B * 0.144R)

    Dim r = greyLevel * kValue + (color.R) * (1 - kValue)
    Dim g = greyLevel * kValue + (color.G) * (1 - kValue)
    Dim b = greyLevel * kValue + (color.B) * (1 - kValue)

    ' ColorUtils.ToByte converts the double value 
    ' to a byte safely
    Return …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net colors

8
推荐指数
2
解决办法
1万
查看次数

C#确定图像中是否存在对象

背景:

我们计划在传送系统上使用相机来计算物体.在这种特定情况下,我们不能使用传感器.我的所有物体都非常一致,如果它们出现在图片中,很容易被发现.我一直在寻找Aforge和其他一些图书馆,看起来很容易. 这就是我想要做的.

话虽如此,我确实有一些担忧.在过滤过程中,您必须指定要搜索的颜色.我的对象是纯色,但我们都知道在我看到的特定点上可能有100多个不同的rgb值.

有没有办法搜索一系列颜色,或者看一种颜色是否"喜欢"特定的颜色?

这是我第一次进行任何图像处理.我还没有尝试任何东西,即将开始,这在我开始之前就是一个问题.

任何帮助将不胜感激.

c# image colors image-processing

5
推荐指数
1
解决办法
723
查看次数

标签 统计

colors ×8

c# ×6

image ×3

rgb ×3

.net ×2

algorithm ×2

image-processing ×2

aforge ×1

c++ ×1

hsb ×1

hsl ×1

hsv ×1

png ×1

vb.net ×1