java bufferedimage颜色_基于Java BufferedImage实现识别图片中的黑色矩形

本文介绍了如何使用Java的BufferedImage类来识别并处理图片中的黑色矩形。通过二值化、去噪处理,然后转换为矩阵,找到最大全为1的子矩阵,实现对黑色矩形的定位。最后,提供了粘贴新图像以替换黑色矩形的方法。
摘要由CSDN通过智能技术生成

基于Java BufferedImage实现识别图片中的黑色矩形

前言:在项目中需要实现将图片中的黑色矩形替换为其他图形,其中的难点在于图片中存在其他黑点或者黑色小方块。

实现思路:

二值化,将纯黑的区域保留下来,其他区域编程白色。

去噪:去除噪点

转为矩阵,将黑色像素点的位置的值设为1,其他位置的值设为0

求极大全为1的子矩阵,使用悬吊法求极大全为1的子矩阵

二值化代码:

public static void binaryImage(String filePath,double threshold){

try {

BufferedImage image = ImageIO.read(new File(filePath));

int minX = 0;//图片起始点X

int minY = 0;//图片起始点Y

int width = image.getWidth();//图片的宽度

m = width;

int height = image.getHeight();//图片的高度

n = height;

//将黑色区域化为1,其他为0

for (int i = minX; i < width; i++) {

for (int j = minY; j < height; j++) {

Object data = image.getRaster().getDataElements(i, j, null);//获取该点像素,并以object类型表示

int red = image.getColorModel().getRed(data);

int blue = image.getColorModel().getBlue(data);

int green = image.getColorModel().getGreen(data);

if(red==0&&green==0&&blue==0){

a[i+1 ][j+1 ] = 1;

}

}

}

}catch (IOException e) {

e.printStackTrace();

}

}

去噪:

public static void removeNoise(int whiteThreshold,int blackThreshold){

int i,j,nValue,nCount,m,n;

int nWidth=Calculate.maxn;

int nHeight=Calculate.maxn;

//对图像上下边缘去噪

for(i=0;i

a[i][0]=0;

a[i][nHeight-1]=0;

}

//对图像上下边缘去噪

for( i=0;i

a[0][i]=0;

a[0][nWidth-1]=0;

}

//根据周围点的颜色去噪

//遍历所有的点 //j是y, i是x

for(i=1;i

for( j=1;j

nValue=a[i][j];

if(nValue==1&&whiteThreshold!=0){//如果一点是黑点

nCount=0;

//遍历他周围的八个点,如果他

for(m=j-1;m<=j+1;m++){

for(n=i-1;n<=i+1;n++){

if(a[n][m]==0){//周围白点的个数

nCount++;

}

}

}

if(nCount>=whiteThreshold){//周围白点的个数大于阈值则变为白色

a[i][j]=0;

}

}else{//如果一个点是白色的点,周围的点是黑色

nCount=0;

for(m=j-1;m<=j+1;m++){

for(n=i-1;n<=i+1;n++){

if(a[n][m]==1){

<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值