java 拉普拉斯_拉普拉斯滤波器产生奇怪的结果(Java)

[-1][-1][-1]

[-1][8][-1]

[-1][-1][-1]

3*3拉普拉斯过滤到灰度版的著名照片(png扩展)在这里。

YEfWA.pngs

BufferedImage

类处理图像。这是拉普拉斯滤波法。

private BufferedImage measureContrast(BufferedImage image) {

BufferedImage grayScale = createGrayscaleImage(image);

BufferedImage copy = copyImage(grayScale);

int width = image.getWidth();

int height = image.getHeight();

int sum=0;

int a;

//3*3 Laplacian filter (-1,-1,-1), (-1,8,-1), (-1,-1,-1)

for(int y=1;y

for(int x=1;x

sum = (-1*(grayScale.getRGB(x-1, y-1)&0xff)) + (-1*(grayScale.getRGB(x, y-1)&0xff)) + (-1*(grayScale.getRGB(x+1, y-1)&0xff))

+ (-1*(grayScale.getRGB(x-1, y)&0xff)) + (8*(grayScale.getRGB(x,y)&0xff)) + (-1*(grayScale.getRGB(x+1, y)&0xff)) +

(-1*(grayScale.getRGB(x-1, y+1)&0xff)) + (-1*(grayScale.getRGB(x, y+1)&0xff)) + (-1*(grayScale.getRGB(x+1, y+1)&0xff));

a = ((grayScale.getRGB(x, y)>>24)&0xff);

copy.setRGB(x, y, ((a<<24)|(sum<<16)|(sum<<8)|(sum)));

}

return copy;

如果我运行代码,结果会是这样的

eqI3n.pngs

我可以保证灰度版本是正确的,因为当我在应用过滤器之前运行以下代码时,输出会给出一个完美的灰度图像。

private BufferedImage measureContrast(BufferedImage image) {

BufferedImage grayScale = createGrayscaleImage(image);

BufferedImage copy = copyImage(grayScale); /*rest of the code is commented*/

return copy;

dRgUD.pngs

我已经试着找出这个问题几个小时了,但我不认为代码有什么问题。。。任何洞察都将不胜感激。提前谢谢!

BufferedImage copyImage(BufferedImage bi) {

ColorModel cm = bi.getColorModel();

boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();

WritableRaster raster = bi.copyData(null);

return new BufferedImage(cm, raster, isAlphaPremultiplied, null);

}

而且,结果图像是这样打印的

BufferedImage Contrast = measureContrast(image);

//write image

try {

ImageIO.write(Contrast, "png", new File(outputPath));

System.out.println("Printing complete");

}catch(IOException e) {

System.out.println("File Printing Error: "+e);

}

以防万一,这里是灰度图像的生成方法。

private BufferedImage createGrayscaleImage(BufferedImage image) {

int width = image.getWidth();

int height = image.getHeight();

BufferedImage copy = copyImage(image);

int p=0, a=0, r=0, g=0, b=0, avg=0;

for(int y=0;y

for(int x=0;x

p=image.getRGB(x, y);

a=(p>>24)&0xff;

r=(p>>16)&0xff;

g=(p>>8)&0xff;

b=p&0xff;

avg = (r+g+b)/3;

p = (a<<24) | (avg<<16) | (avg<<8) | avg;

copy.setRGB(x, y, p);

}

return copy;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
拉普拉斯算子的高通滤波器可以通过巴特沃斯高通滤波器锐化来实现。在python中,可以使用OpenCV库来实现这一功能。下面是一个示例代码: ```python import cv2 import numpy as np def laplace_high_pass_filter(img, M, D0): # 首先对图像进行灰度化处理 gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 对图像进行拉普拉斯锐化 lap_img = cv2.Laplacian(gray_img, cv2.CV_16S, ksize=3) # 对图像进行巴特沃斯高通滤波器锐化 rows, cols = lap_img.shape mask = np.zeros((rows, cols), np.float32) for i in range(rows): for j in range(cols): d = np.sqrt((i - rows / 2) ** 2 + (j - cols / 2) ** 2) mask[i, j = 1 / (1 + (d / D0) ** (2 * M)) filtered_img = np.multiply(lap_img, mask) # 将图像转换回uint8格式 filtered_img = cv2.convertScaleAbs(filtered_img) return filtered_img ``` 其中,`img`是输入的图像,`M`是巴特沃斯高通滤波器的阶数,`D0`是截断频率。函数会返回经过拉普拉斯算子的高通滤波器锐化后的图像。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [拉普拉斯算子Laplace](https://blog.csdn.net/bblingbbling/article/details/109743608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [数字图像处理(图像锐化)](https://download.csdn.net/download/liangyuexin/1671610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值