首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中改进invert +灰度算子?

如何在Java中改进invert +灰度算子?
EN

Stack Overflow用户
提问于 2015-04-28 02:21:50
回答 3查看 2.5K关注 0票数 2

我想要倒置和灰度图像。这是我最初的形象:

下面是我想要达到的最终结果(用Paint.NET生成):

然而,使用一些(基本的?)在Internet上找到的Java代码,我只看到下面的图片:

下面是我使用的代码:

代码语言:javascript
复制
private static final byte[] invertTable;

static {
    invertTable = new byte[256];
    for (int i = 0; i < 256; i++) {
        invertTable[i] = (byte) (255 - i);
    }
}

private static BufferedImage grayScale(BufferedImage source) {
    ColorConvertOp grayScale = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);

    return grayScale.filter(source,null);
}

private static BufferedImage invertImage(final BufferedImage src) {
    final int w = src.getWidth();

    final int h = src.getHeight();

    final BufferedImage dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);

    final BufferedImageOp invertOp = new LookupOp(new ByteLookupTable(0, invertTable), null);

    return invertOp.filter(src, dst);
}

// ...
BufferedImage sourceImage = ...
BufferedImage convertedImage = grayScale(invertImage(sourceImage));

如何改进上述代码?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-29 21:48:42

使用ImgprocCore,我做到了

代码语言:javascript
复制
Mat src = new Mat();
Mat gray = new Mat();
src = Highgui.imread("...");
Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
Core.bitwise_not(gray, gray);
Highgui.imwrite("...", gray);

得到了更接近的东西,虽然不是完全相同的:

票数 6
EN

Stack Overflow用户

发布于 2015-05-17 16:17:04

标题中写着OpenCV,但是BoofCV有一个标签。下面是如何在BoofCV中这样做:

代码语言:javascript
复制
BufferedImage orig = UtilImageIO.loadImage("filename");
ImageUInt8 gray = ConvertBufferedImage.convertFrom(orig, (ImageUInt8) null);
ImageUInt8 inverted = new ImageUInt8(gray.width,gray.height);
GrayImageOps.invert(gray,255,inverted);

票数 4
EN

Stack Overflow用户

发布于 2015-04-28 14:32:00

虽然我不熟悉ColorConvertOp,但我怀疑它正在以与Paint.NET不同的方式将彩色图像转换为灰度。没有正确的方法。

看看黄色的。黄色是深灰色还是浅灰色?看起来Paint.NET认为它是光的,而ColorConvertOp认为它是黑暗的。

试着把红色/绿色/蓝色平均化。

代码语言:javascript
复制
(red+green+blue)/3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29909193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档