当前位置: 代码迷 >> J2SE >> java BufferedImage像素操作的有关问题
  详细解决方案

java BufferedImage像素操作的有关问题

热度:154   发布时间:2016-04-23 19:51:20.0
java BufferedImage像素操作的问题
各位前辈好。
我在将一个图像转化为2值图像后,想进行如下操作:
将图像划分为7*7个小块,如果某一小块中的黑像素值大于30%,则在图中显示此小块,否则不显示。

可见达到目的了,但是如果我想将小块数量增多,比如,增加到40*40的时候,就无法得到想要的结果:

想问下为什么会出现这种情况,难道是空白处有黑点干扰吗?
------解决思路----------------------
好奇怪的问题,可惜我不懂,帮顶一个
------解决思路----------------------
几点疑问
1、好奇怪的滤波,你是按每个点为中心,然后计算点周围3*3范围内有多少个黑块来确定中心点显式不显式的吧
4/9= 44.4% 你的30%怎么确认的?
2、你的滤波没什么问题,但是你这个设值有点问题,你应该另起一个图像,滤波后对应赋值,这样才不会出现因为你的计算结果赋值影响到下一个点的计算。就好比一团墨水,你手一带,那一团全黑了~....
不知道你明白我的意思没....
------解决思路----------------------
引用:
几点疑问
1、好奇怪的滤波,你是按每个点为中心,然后计算点周围3*3范围内有多少个黑块来确定中心点显式不显式的吧
4/9= 44.4% 你的30%怎么确认的?
2、你的滤波没什么问题,但是你这个设值有点问题,你应该另起一个图像,滤波后对应赋值,这样才不会出现因为你的计算结果赋值影响到下一个点的计算。就好比一团墨水,你手一带,那一团全黑了~....
不知道你明白我的意思没....

我估计lz的意思是3/9≈30%,所以大于30%就是大于3/9,所以是4块
我觉得第2点说的很对,假设说原图像是这样的(#号表示黑块,数字为标记。3X5)
#####
  #12
#
#####
那么,当i=1,j=2的时候就有意思了,这个时候应该画1这块了,左边和上边总共4块,黑色。然后j=3,由于1是黑的,那么,对于2来说,左边和上边4块黑的,黑色。问题就出来这里,原本只应该1是黑色的,现在2也变成黑色的了
这应该是@qq118194716的意思吧。。。
  相关解决方案