所以我发现我可以像这样将图像转换为灰度:
public static Bitmap GrayScale(this Image img)
{
var bmp = new Bitmap(img.Width, img.Height);
using(var g = Graphics.FromImage(bmp))
{
var colorMatrix = new ColorMatrix(
new[]
{
new[] {.30f, .30f, .30f, 0, 0},
new[] {.59f, .59f, .59f, 0, 0},
new[] {.11f, .11f, .11f, 0, 0},
new[] {0, 0, 0, 1.0f, 0},
new[] {0, 0, 0, 0, 1.0f}
});
using(var attrs = new ImageAttributes())
{
attrs.SetColorMatrix(colorMatrix);
g.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height),
0, 0, img.Width, img.Height, GraphicsUnit.Pixel, attrs);
}
}
return bmp; …Run Code Online (Sandbox Code Playgroud) 我正在开展一个项目,其中将检查两个图像的相似性,如"Google Image Search by image".
我搜索了谷歌以及包括stackoverflow在内的各种网站,并了解了各种技术,如直方图,筛选,傅立叶变换,像素抓取等等
.事情太复杂了,我无法理解成为这个领域的初学者.
我的问题是:
我从哪里开始?是否有任何书籍或网站提供有关如何实际使用这些技术的教程?
是否有可以为此目的实施的新技术?
我想开始通过颜色搜索图像,然后如果可能的话,其他属性.
首选语言是Java.
关于这个主题有一个类似的主题,但它是几年前写的.