图像边缘提取 java_提取图像边缘
利用java打开一张图片,并提取其边缘。功能有打开文件,以及提取边缘。
算法原理
由于边缘提取的算法有很多种,而提取的精度在相同阈值的情况下也会有不同的结果。
这次我的边缘提取使用索贝尔算子(Sobel operator)。
该算子会把图像每一点的灰度矢量计算出来。而分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。
算法核心:
public int getGrayPoint(int x, int y) {
return grayData[y * width + x];
}
protected final int GradientX(int x, int y) {
return getGrayPoint(x - 1, y - 1) + 2*getGrayPoint(x - 1, y)+ getGrayPoint(x - 1, y + 1) - getGrayPoint(x + 1, y - 1)- 2*getGrayPoint(x + 1, y) - getGrayPoint(x + 1, y + 1);
}
protected final int GradientY(int x, int y) {
return getGrayPoint(x - 1, y - 1) + 2*getGrayPoint(x, y - 1)+ getGrayPoint(x + 1, y - 1) - getGrayPoint(x - 1, y + 1)- 2*getGrayPoint(x, y + 1) - getGrayPoint(x + 1, y + 1);
而利用JAVA 的GUI界面将图片打开且直接进行操作:
setTitle("Test");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
label = new JLabel();
add(label);
chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
JMenuBar menubar = new JMenuBar();
setJMenuBar(menubar);
JMenu menu = new JMenu("文件");
JMenu menu2 = new JMenu("操作");
menubar.add(menu);
menubar.add(menu2);
JMenuItem openItem = new JMenuItem("打开");
JMenuItem Clicktime = new JMenuItem("提取边缘");
menu.add(openItem);
menu2.add(Clicktime);
JMenuItem exitItem = new JMenuItem("关闭");
menu.add(exitItem);
SobelEdgeDetect tp=new SobelEdgeDetect(50);
openItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int result = chooser.showOpenDialog(null);
if(result == JFileChooser.APPROVE_OPTION){
String name = chooser.getSelectedFile().getPath();
label.setIcon(new ImageIcon(name));
try {
tp.readImage(name);
} catch (IOException ex) {
Logger.getLogger(ImageViewerFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.exit(0);
}
});
Clicktime.addActionListener(new ActionListener() {
private int heightWMI;
@Override
public void actionPerformed(ActionEvent e) {
String desImageName = "1.jpg";
tp.createEdgeImage(desImageName);
label.setIcon(new ImageIcon(desImageName));
}
});
}
private JLabel label;
private JFileChooser chooser;
private static final int DEFAULT_WIDTH = 1280;
private static final int DEFAULT_HEIGHT =800;
执行后可将图片边缘提取:(这里设定阈值为50)
预览:
图像边缘提取 java_提取图像边缘相关推荐
- matlab 提取图像轮廓(图像边缘提取)
利用edge()函数提取图像轮廓,绘制出对象的边界和提取边界坐标信息,matlab实现代码如下: close all;clear all;clc; % 提取图像轮廓,提取图像边缘 I = imread ...
- 计算机视觉中能量函数,基于改进Snake模型能量函数在MR图像边缘提取中的研究...
摘 要: 在分析传统主动轮廓模型的基本原理.数学表征及算法实现的基础上,针对其收敛于局部极小值和依赖初始位置选取方面存在的不足,提出了改进的主动轮廓模型.该模型通过对一阶连续性能量Econt的改进和 ...
- Opencv图像特征点提取(
目录 特征点分类 1 ORB ①特征点检测 ②计算特征描述 2 SIFT 1 SIFT特征检测的步骤 ①.在DOG尺度空间中获取极值点,即关键点. ②.特征点方向估计 ③生成特征描述 ④.代码实现 3 ...
- c++gdal如何在大图像中截取小图像并获取其图像信息_OpenCV 图像处理大纲
图像的取样和量化 取样就是取像素点,量化把灰度值量化到256个灰度级 数字图像的表示 图像定义为二位函数f(x, y),x,y是空间坐标f(x, y)是点的幅值 数字图像的质量 灰度级:表明像素明暗程 ...
- OpenCV 图像边缘提取(三)—— Laplance算子提取边缘原理及OpenCV API使用(C#)
理论:在二阶导数的时候,最大变化处的值为零即边缘是零值.通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘. API public static void Laplacian(InputA ...
- 使用差分金字塔提取图像边缘 python实现
本文提供一种提取图像边缘的快速算法 更多提取图像边缘的方法: 最大-最小滤波器实现图像边缘提取 Prewitt滤波器和Sobel滤波器提取图像边缘 拉普拉斯滤波器提取图像边缘 差分金字塔提取图像边缘算 ...
- 利用matlab写一个简单的拉普拉斯变换提取图像边缘
可以证明,最简单的各向同性微分算子是拉普拉斯算子.一个二维图像函数 f(x,y) 的拉普拉斯算子定义为 其中,在 x 方向可近似为 同理,在 y 方向上可近似为 于是 我们得到满足以上三个公式的两个变 ...
- python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...
python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...
- halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...
全文共4073字,预计学习时长8分钟 你之前是否使用过图像数据?也许你想建立自己的物体检测模型,或者仅仅是想统计走进某栋建筑物的人数,使用计算机视觉技术处理图像拥有无穷无尽的可能性. 但数据科学家最近 ...
最新文章
- Facebook Messenger要点燃聊天机器人革命,据说四月就发布!
- JavaScript——String转DOM对象解决方案
- 如何解决inline-block元素的空白间距
- python vtk dicom_Python vtk读取并显示dicom文件示例
- 20191107每日一句
- C# 怎么生成DLL文件(转)
- 如何把后缀为.mdf的文件打开
- GIT文档同步MinDoc - MinDoc模拟登陆
- veu2x 消息订阅与发送
- 双稳态电路的两个稳定状态是什么_NE555集成电路--交替闪烁灯
- GPGPU渲染GPU的工作原理和认知总结
- Oracle ebs r12官方虚拟机配置
- Github加速访问
- 【前端学习之HTMLCSS】-- 视觉格式化模型之二 浮动 -- 练习
- 在中科院计算所实习的一年(更新中。。)
- Google Amp学习笔记(一)
- 基于51单片机的无线遥控小车
- 1.1.2续 特殊二极管部分选型
- new 构造函数原理
- 游戏数据运营--1. 怎样做好游戏数据分析