【发布时间】:2016-03-27 06:24:40
【问题描述】:
我正在从位图图像中获取 RGB 颜色列表。现在我想分开 maximum 'approximate' 相同的数字。
即
245, 230,230 和 235, 230, 230 应该被认为是相同的(最大差异为 5)。
我成功地提取了相同的数字,并且显然也知道如何找到一个数字中的最大值,但无法弄清楚如何告诉算法将 10-30 的差异视为相同的数字。
这是我的代码:
for (int x = 0; x < bmp.Width; x++)
{
for (int y = 0; y < bmp.Height; y++)
{
if (y < bmp.Height && y > 0)
{
c = bmp.GetPixel(x, y);
if (db.Contains(c.R.ToString() + " " + c.G.ToString() + " " + c.B.ToString()) == false)
{
if (i == 0)
{
db.Add(c.R.ToString() + " " + c.G.ToString() + " " + c.B.ToString());
}
}
else
i++;
}
}
}
foreach (string dbs in db)
richTextBox1.Text = richTextBox1.Text + dbs+Environment.NewLine;
//same amount of numbers not written above are:
richTextBox1.Text = richTextBox1.Text + i.ToString()+ Environment.NewLine;
【问题讨论】:
-
为什么要转成字符串?如果你没有把它转换成字符串,你可以比较它的 RGB 值。
-
你能举出更多可以被认为相同或不同的数字的例子吗?
-
它不仅仅是关于 RGB 或字符串或其他什么......只是如何将近似值视为单个值!
-
245, 230,230 和 235, 230, 230,相差 10 对吗?如果我错了,请纠正我。
-
这可能会导致一个大问题。例如 (245, 230, 230) 等于 (215, 230, 230),(215, 230, 230) 也等于 (185, 230, 230),但 (245, 230, 230) 不是等于 (185, 230, 230)。你如何解决这个逻辑问题?
标签: c# algorithm sorting bitmap