首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的图像去噪方法做错了什么?

我的图像去噪方法做错了什么?
EN

Stack Overflow用户
提问于 2016-12-13 05:32:41
回答 1查看 81关注 0票数 0

我一直在尝试使用this article中描述的中值滤波器对图像进行去噪

我只做一次直到我把这玩意儿修好。结果很大程度上是一个被冲刷掉的图像,如下所示。

下面是我的代码的最小工作版本:

代码语言:javascript
复制
import java.awt.image.BufferedImage;
import java.util.Arrays;

public class Denoise {

public static void main(String args[]) {
        String directory = "C:\\Users\\Speedy Octopus\\Desktop\\Place Car Folders Here\\Original\\15.JPG";
        BufferedImage image = ImageUtility.loadImage(directory);

    for (int iterationCount = 0; iterationCount < 1; iterationCount++){ 
        for (int i = 1; i < image.getWidth()-1; i++) {
            for (int j = 1; j < image.getHeight()-1; j++) {
                image.setRGB(i, j, getMedianPixelValue(image, i, j));
            }
        }

    }
    String directory2 = "C:\\Users\\Speedy Octopus\\Desktop\\Place Car Folders Here\\Original\\152.JPG";
    Controller.saveImage(image, directory2);
}

public static int getMedianPixelValue(BufferedImage image, int i, int j) {
    int[] surroundingPixels = new int[8];

    int iter = 0;
    for (int q = i-1; q<=i+1; q++) {
        for (int r = j-1; r<=j+1;r++) {
            if (!(q == i && r == j)) {
                surroundingPixels[iter] = image.getRGB(q, r);
                iter++;
            }
        }
    }

    Arrays.sort(surroundingPixels);

    int medianIndex = surroundingPixels.length/2;
    int medianPixel = surroundingPixels[medianIndex];

    return medianPixel;
}

}

EN

回答 1

Stack Overflow用户

发布于 2016-12-13 05:55:02

正如我在这个问题中回答的那样,Applying Mean filter on an image using java getRGB“在默认的RGB颜色模型(TYPE_INT_ARGB)中返回一个整数像素”,因此在进行任何比较之前,您必须提取并删除alpha (A)分量:

代码语言:javascript
复制
pixel=image.getRGB(i, j)&0x00ffffff;

在媒体分类等方面

您可以提取R、G和B并分别处理它们,或者对整个像素RGB进行比较-您可以使用任何一种方法进行实验。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41109964

复制
相关文章

相似问题

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