gpt4 book ai didi

java - 索贝尔算子 MaskX

转载 作者:搜寻专家 更新时间:2023-11-01 03:34:12 24 4
gpt4 key购买 nike

为什么我的图像质量在屏蔽 x 后变得更差?

public void doMaskX() {
int[][] maskX = { { -1, -2, -1 }, { 0, 0, 0 }, { 1, 2, 1 } };

int rgb, alpha = 0;
int[][] square = new int[3][3];

for (int y = 0; y < width - 3; y++) {
for (int x = 0; x < height - 3; x++) {
int sum = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
rgb = imgx.getRGB(y + i, x + j);

alpha = (rgb >> 24) & 0xff;
int red = (rgb >> 16) & 0xff;
int green = (rgb >> 8) & 0xff;
int blue = rgb & 0xff;

square[i][j] = (red + green + blue)/3;
sum += square[i][j] * maskX[i][j];
}
}
rgb = (alpha << 24) | (sum << 16) | (sum << 8) | sum;
imgx.setRGB(y, x, rgb);

}
}
writeImg();
}

this is an image before masking

And this is the image after masking

第二张图质量应该更好,为什么会出现黄色?

最佳答案

重要的是要意识到您正在计算此处的梯度强度,这就是您要显示的内容。因此强度(或幅度)是正数。你必须取绝对值:

sum=Math.abs(sum);

如果你也采用 y 导数,那么你可以合并:

sum=Math.sqrt(sumx*sumx+sumy*sumy);

关于java - 索贝尔算子 MaskX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36504453/

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