gpt4 book ai didi

java - 两个像素之间的 "Difference in Brightness"

转载 作者:行者123 更新时间:2023-12-02 06:36:08 25 4
gpt4 key购买 nike

经过几个小时的搜索,我依赖您的专业知识!请帮忙!

基本上,我正在尝试访问灰度图像中各个像素的数据。

这是我正在谈论的图像的链接:- http://s14.postimg.org/ak092kza5/WORKS.jpg?noCache=1382913709 (它应该是全黑的。我知道我可以直接给它上色,但这不是我想学的 - 我想知道如何消除噪音!)

 public static void handlesinglepixel(int x, int y, int pixel) {
int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
// Deal with the pixel as necessary...
}

public static void handlepixels(Image img, int x, int y, int w, int h) {
int[] pixels = new int[w * h];
PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w);
try {
pg.grabPixels();
} catch (InterruptedException e) {
System.err.println("interrupted waiting for pixels!");
return;
}
if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
System.err.println("image fetch aborted or errored");
return;
}
for (int j = 0; j < h; j++) {
for (int i = 0; i < w; i++) {
handlesinglepixel(x + i, y + j, pixels[j * w + i]);
}
}
}

所以使用它我可以访问各个像素。我很开心!但是......我现在想比较相邻的像素,看看它们是否比其他像素异常亮。我这样做是因为我想消除图片中的噪音。有什么建议吗?

P.S 我尝试使用 RescaleOp 并更改所有像素的亮度系数,然后再次将它们相乘,但它只是使图像无法识别。我真的很困惑如何消除噪音!

我期待阅读您的回复。

最佳答案

这很大程度上取决于您要消除的噪音类型。如果您遇到某些相邻像素比设定区域中的大多数像素亮得多的情况,那么您通常会使用简单的内核进行某种类型的 2D 过滤。

我们缺少您提供的一些信息,例如噪音类型。因此,我将在手头上的信息有限的情况下尽我所能。

首先,什么是“太亮”? “太亮”只是比相邻像素的强度高几个标准偏差,还是基本上是黑色或白色的像素?

在后一种情况下,它是椒盐/脉冲噪声消除。

您基本上会执行 3x3 空间滤波器,并选择众数或中值。瞧,不再有过亮的像素。但是,这会有效地使您的图像稍微模糊,因此您可以考虑使用自适应过滤,这样您只需修改比周围像素更亮的像素,而不是修改所有像素。

最后,我们必须考虑到您只是想根据某些统计值删除比周围像素更亮的像素,而不是这些像素只是潜在的极端异常值(即:脉冲/椒盐噪声)。最后一种方法在 CPU 时间方面非常昂贵,但可以让您处理局部极值。

  1. 对于NxN滤波器核,计算该核重叠的所有像素的均值/平均强度值,即:E(X)。 (即:将每个像素除以 N^2,然后将它们相加,以避免溢出)
  2. 对于相同的 NxN 区域,计算标准差 E(X^2)。 (即:计算平均值,然后对于每个像素,计算 (pixel_intensity -mean_value) 的绝对值,然后平方。将所有这些差值相加,然后除以 N^2。
  3. 循环遍历 NxN 区域中的所有像素。如果单个像素超出平均值 2.5 个标准差,则将其强度降低固定百分比。

http://www.mathsisfun.com/data/standard-deviation.html

如果您将此统计方法与自适应滤波技术结合起来(即:检测哪些像素需要修改,而不是盲目地修改所有可用像素),您可以删除有问题的像素,而不会影响整体图像质量。数量可观。

最后,您还应该考虑研究有关图像处理的拉普拉斯运算符。它充当简单的边缘检测器,也可能引导您走向正确的方向。

http://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm

祝你好运!

关于java - 两个像素之间的 "Difference in Brightness",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com