「java图片算法」java的图像处理
本篇文章给大家谈谈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的图像处理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-25,除非注明,否则均为
原创文章,转载请注明出处。