**

Java中实现图像的卷积效果

**

图像的卷积: 指的是使用一个卷积核(kernel)对图像中的每一个像素进行一些列操作。卷积核(算子)是用来做图像处理时的矩阵,图像处理时也称为掩膜,是于原图像做运算的参数。卷积核通常是一个方形的网格结构,该区域上的每一个方格都有一个权重值,如下图,利用一个3 * 3的卷积核与图像上的相应大小的区域进行卷积运算,即对应相乘再相加,0 * 4 + 0 * 0 + 0 * 0 + 0 * 0 + 0 * 1 + 1 * 0 + 0 * 0 + 1 * 0 + 2 *(-4) = -8.

Java中实现的效果:

主类:

package com.yf1105;import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;
import javax.swing.JFrame;public class DrawF {public static void main(String[] args) {DrawF drawpanel = new DrawF();drawpanel.showUI();}public void showUI() {JFrame jf = new JFrame();jf.setTitle("图片");jf.setSize(800, 800);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setLayout(new FlowLayout());jf.setLocationRelativeTo(null);jf.setVisible(true);//获取画笔一定要在可见之后Graphics g = jf.getGraphics();//添加监听器DrawListener mouse = new DrawListener();jf.addMouseListener(mouse);//将主类中的画笔传给监听器类中去mouse.g = g;}
}

监听类:

package com.yf1105;import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;public class DrawListener implements MouseListener{Graphics g;public int[][] getImagePixel(String path){File file = new File(path);BufferedImage bufferImage = null;try {bufferImage = ImageIO.read(file);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}int w = bufferImage.getWidth();int h = bufferImage.getHeight();int [][] pixelArray = new int[w][h];for(int i = 0; i < w; i++) {for(int j = 0; j < h; j++) {//读取每个位置的像素点对应的RGB值int pixel = bufferImage.getRGB(i, j);pixelArray[i][j] = pixel;}}return pixelArray;}//在界面上画出ia数组图像,即卷积结果public void drawjj(Graphics g) {int[][] ia = getImagePixel("image/3.jpg");ia = valide(ia, kArray);for(int i = 0; i<ia.length; i++) {for(int j = 0; j<ia[0].length; j++) {int pie = ia[i][j];Color color = new Color(pie,pie,pie);g.setColor(color);g.fillRect(i, j, 1, 1);}}}//卷积核float[][] kArray = {{-1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1}, {-1, -1, 25, -1, -1}, {-1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1}};//实现卷积操作public static int[][] valide(int[][] src, float[][] filter){int[][] tem = new int[filter.length][filter[0].length];int valideWidth = src[0].length - filter[0].length;int valideHeigth = src.length - filter.length + 1;int[][] valide = new int[valideHeigth][valideWidth];for(int i = 0; i<valideHeigth; i++) {for(int j = 0; j<valideWidth; j++) {for(int y = 0; y<filter.length; y++) {for(int z = 0; z<filter[0].length; z++ ) {tem[y][z] = (int)((src[i+y][j+z])*filter[y][z]); }}int kk = 0;for(int y = 0; y<filter.length; y++) {for(int z = 0; z<filter[0].length; z++) {kk += tem[y][z];}}if(kk<0)kk=0;if(kk>255)kk=255;valide[i][j] = kk;}}return valide;}public void mouseClicked(MouseEvent e) {System.out.println("点击");drawjj(g);}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}
}

实现效果:

原图为:

Java中实现图像的卷积效果相关推荐

  1. Java中的图像锐化操作

    ** Java中的图像锐化操作 ** 一.该图像锐化的思想: 本文的图像锐化是将图像中的R,G,B的值分别从原图像中提出,然后将分别将这三个R,G,B的值分别与卷积核进行卷积,最终再将最后的三个卷积的 ...

  2. Java中实现六种图像处理的效果(灰度化、马赛克效果、去背景实现、珠纹化实现、黑白版画效果、油画效果)

    ** Java中实现六种图像处理的效果(灰度化.马赛克效果.去背景实现.珠纹化实现.黑白版画效果.油画效果) ** 本文的编程的思想: 先将实现这六种效果的方法写入一个名为pic_performanc ...

  3. Java垂直镜像,Java OpenCV实现图像镜像翻转效果

    本文实例为大家分享了Java OpenCV实现图像镜像翻转效果的具体代码,供大家参考,具体内容如下 主要使用OpenCV的flip()方法,可以实现图像的垂直.水平以及同时垂直镜像翻转. flip是C ...

  4. java处理图像减小大小不改变像素_在Java中调整图像大小以降低内存消耗

    ImageMagick的"转换"命令行工具使您可以在执行操作时指定内存使用限制. 我想找到一个提供相同选项的Java图像大小调整库. 我的应用程序有时会获得非常大的JPEG,因此需 ...

  5. 如何在Java中调整图像大小?

    我不是Java图像处理方面的专家,但是有机会在用户图像上传表单中实现此重新调整大小的功能,该功能要求将较大的图像重新调整为具有固定宽度和高度的较小尺寸. Graphics2D提供了图像调整大小功能,如 ...

  6. java中抓拍图像_JavaCV调用摄像头并抓拍图片保存到本地

    添加依赖 org.bytedeco javacv-platform 1.4.1 org.bytedeco.javacpp-presets opencv-platform 3.4.1-1.4.1 jun ...

  7. Java中 实现通过文件夹选择任一图像,从而进行图像卷积操作

    ** Java中 实现通过文件夹选择任一图像,从而进行图像卷积操作 ** 之前的那篇关于图像卷积的博客(Java中实现图像的卷积效果),只是讲了给定一张图片,从而实现图片的卷积操作:而现在,需要去实现 ...

  8. java 图片旋转 翻转 镜像处理_Java OpenCV实现图像镜像翻转效果

    本文实例为大家分享了Java OpenCV实现图像镜像翻转效果的具体代码,供大家参考,具体内容如下 主要使用OpenCV的flip()方法,可以实现图像的垂直.水平以及同时垂直镜像翻转. flip是C ...

  9. 如何在Java中转换Excel文件到图像?

    Excel电子表格被广泛用于存储,组织和分析数据.但是,不能将Excel工作簿或工作表直接嵌入到Web或桌面应用程序中.合适的选项之一是将工作表转换为图像或HTML格式.在本文中,将学习如何使用Jav ...

最新文章

  1. OpenGL之glMatrixMode函数的用法
  2. 程序的格式框架语法元素的名称(Python)
  3. NAACL 2019 | 一种考虑缓和KL消失的简单VAE训练方法
  4. x265-确定slice type-1
  5. 【flyway】flyway Migration checksum mismatch for migration
  6. mysql case默认_MySQL -- 配置文件my.cnf 的详细说明
  7. win10+ubuntu18.04双系统配置深度学习环境
  8. 001 spring介绍
  9. 电脑问题勘查 —— BIOS
  10. 解决tomcat 的端口被占用问题
  11. Android Dialog用法
  12. DOSBox指令全 汇编指令大全 debug
  13. 钉钉小程序添加vant组件库
  14. 小米手机显示崩溃日志
  15. JavaUUID的理解
  16. springboot 配置RedisTemplate 报:Field redisTemplate in XXX required a bean of type 'org.springframework
  17. Artemis架构解析
  18. 关于av_freep
  19. 这有2T的无损音乐,感谢发布者 http://www.everbox.com/f/mKqJ211fRAFY183t9RYOEXMzDp
  20. 一个基于codeigniter的淘宝客程序源码,适合学习参考,京东拼多多淘宝联盟api

热门文章

  1. 强烈推荐16 款牛逼的 IDEA 插件,让你开发速度飞起来!
  2. 什么是一致性 Hash 算法
  3. CALayer(二)
  4. Jquery让按钮(控件)不可见或者不可用
  5. umi3 如何管理model_django admin 管理工具
  6. Docker学习(5)——创建私有仓库,为私有仓库添加web界面
  7. oracle+结果拆分,ORACLE字符拆分函數返回結果集
  8. mqtt 负载均衡_EMQ百万级MQTT消息服务(分布式集群)
  9. 怎么修照片多余的部分_10 个摄影小技巧,让你的照片拿到超多赞!
  10. python批量删除特定字符_根据某个特定字符删除一行