「java图片算法」java的图像处理

博主:adminadmin 2022-11-25 10:48:05 93

本篇文章给大家谈谈java图片算法,以及java的图像处理对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java代码怎么实现计算图像二值连通区域的质心

一:几何距(Geometric Moments)知识与质心寻找原理

1. Image Moments是图像处理中非常有用的算法,可以用来计算区域图像的质心,方向等几何特性,同时Mpq的高阶具有旋转不变性,可以用来实现图像比较分类,正是因为Moments有这些特性,很多手绘油画效果也会基于该算法来模拟实现。它的数学表达为:

它的低阶M00,M01, M10可以用来计算质心,中心化以后M11,M02,M20可以用来计算区域的方向/角度

2. 什么是质心

就是通过该点,区域达到一种质量上的平衡状态,可能物理学上讲的比较多,简单点的说就是规则几何物体的中心,不规则的可以通过挂绳子的方法来寻找。

二:算法流程

1. 输入图像转换为二值图像

2. 通过连通组件标记算法找到所有的连通区域,并分别标记

3. 对每个连通区域运用计算几何距算法得到质心

4. 用不同颜色绘制连通区域与质心,输出处理后图像

三:算法效果

左边为原图, 右边蓝色为连通组件标记算法处理以后结果,白色点为质心

四:关键代码解析

1. 计算几何距算法代码

doublem00 = moments(pixels, width, height, 0, 0);

doublexCr = moments(pixels, width, height, 1, 0) / m00;// row

doubleyCr = moments(pixels, width, height, 0, 1) / m00;// column

return new double[]{xCr, yCr};

谁有Java提取图片特征的算法?有的能给发一个么?不胜感激

图像的特征可分为两个层次,包括低层视觉特征,和高级语义特征。

低层视觉特征包括纹理、颜色、形状三方面。语义特征是事物与事物之间的关系。

纹理特征提取算法有:灰度共生矩阵法,傅里叶功率谱法

颜色特征提取算法有:直方图法,累计直方图法,颜色聚类法等等。

形状特征提取算法有:空间矩特征等等

高级语义提取:语义网络、数理逻辑、框架等方法

Java的图像算法

//没听懂你的需求,能更清楚一些吗?

我以前的一个程序使用BufferedImage读取图像像素点的RGB值,例子在下面。

你从例子中了解一下用一个整数表示RGB颜色的方法。然后用setRGB方法满足你的要求。

方法:

java.awt.image.BufferedImage

public int getRGB(int x,int y)

返回默认 RGB 颜色模型 (TYPE_INT_ARGB) 和默认 sRGB 颜色空间中的整数像素。如果此默认模型与该图像的 ColorModel 不匹配,则发生颜色转换。在使用此方法所返回的数据中,每个颜色分量只有 8 位精度。

public void setRGB(int x, int y,int rgb)

将此 BufferedImage 中的像素设置为指定的 RGB 值。假定该像素使用默认 RGB 颜色模型、TYPE_INT_ARGB 和默认 sRGB 颜色空间。对于具有 IndexColorModel 的图像,则选择最接近的颜色的索引。

参数:

x - 要设置的像素的 X 坐标

y - 要设置的像素的 Y 坐标

rgb - RGB 值

例子:(获取RGB值)---了解一下用一个整数表示RGB颜色的方法

import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;

import java.io.*;

public class Test{

public static void main(String args[]) {

int[] rgb = new int[3];

File file = new File("a.bmp");

BufferedImage bi=null;

try{

bi = ImageIO.read(file);

}catch(Exception e){

e.printStackTrace();

}

int width=bi.getWidth();

int height=bi.getHeight();

int minx=bi.getMinX();

int miny=bi.getMinY();

System.out.println("width="+width+",height="+height+".");

System.out.println("minx="+minx+",miniy="+miny+".");

for(int i=minx;iwidth;i++){

for(int j=miny;jheight;j++){

//System.out.print(bi.getRGB(jw, ih));

int pixel=bi.getRGB(i, j);

rgb[0] = (pixel 0xff0000 ) 16 ;

rgb[1] = (pixel 0xff00 ) 8 ;

rgb[2] = (pixel 0xff );

System.out.println("i="+i+",j="+j+":("+rgb[0]+","+rgb[1]+","+rgb[2]+")");

}

}

}

}

关于java图片算法和java的图像处理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。