Свертка с ядром Gaussian Blur работает, другие ядра не - PullRequest
0 голосов
/ 23 февраля 2020

Я пишу небольшую программу обработки изображений. Используя свертку, я смог заставить работать размытие по Гауссу! Моя проблема в том, что когда я пытаюсь использовать ядро ​​для повышения резкости, оно не работает, хотя, как я понимаю, свертка остается прежней, меняется только ядро. Я что-то пропустил? Мой код:

`    public void convolution(float[] kernel){
        int H = myImage.getHeight();
        int W = myImage.getWidth();
        for(int band=0; band < writer.getNumBands(); band++){
            for(int x = 1; x < W-1 ; x++){ // all the x's
                for(int y = 1; y<H-1; y++){ // for each x, go through all the y's
                    int pixel = 0;
                    int counter = 0;
                    for(int i=-1; i<=1; i++){
                        for(int j=-1; j<=1; j++){
                            pixel += kernel[counter]*myImage.getRaster().getSample(x+i, y+j, band);
                            counter++;
                        }
                    }
                    writer.setSample(x, y, band, (int) (pixel)); //raster object
                }
            }
        }
    }
`

Полученное изображение имеет выделенные края, но имеет очень странные цвета. Спасибо!

...