我目前正在研究一个问题,我使用图片构建分类器来预测结果.基本上,我有一个图片上的对象(一个或几个),我想识别它们.因为我可以有一个或多个对象(并不总是相同),我首先想要计算我的图片上有多少个对象.我不想运行任何机器学习算法,我想尽可能快地做到这一点.
运行k-means(使用颜色)使我能够将图片分成2个颜色组,这使得背景和对象之间已经有了很好的分离.从这张图片中我想找到一种方法来计算所有不同的"区域".我尝试使用颜色和位置来运行k-means以尝试一步完成所有操作,但由于向kmeans添加位置会降低其结果,因此效果不佳.
这是一个图片的例子,一旦用kmeans将它分成两个颜色区域:
显然这里有5个对象和一个背景.或者,或者,6个不同的区域.
我想做的是在该图片上运行一个算法,告诉我这个数字.我不熟悉图像处理,所以我想不出快速有效的方法.我想到的一个解决方案是从对象类中获取一个像素,并测试相邻像素是属于同一个类还是实际上是背景类的一部分.但这将是一个痛苦的漫长的做事方式.
我尝试过blob识别,但看起来这个算法并不适合我需要的东西.
我很想知道如何解决这类问题.我不介意自己编写算法代码,但我也有兴趣知道是否有R软件包能够轻松实现这类功能.
我希望一切都清楚.非常感谢你提前!
我正在寻找围绕所有1s和0s 创建集群。与Mindsweeper相似,我想基本上在所有1s 周围“画一个圆” ,并在0s存在的地方创建边框。
我尝试使用hclust()和创建距离矩阵,但是我正在使用的实际表非常大,并且运行时遇到了问题。
test_matrix <- matrix(c( 1,1,0,0,0,0,1,
1,1,1,0,0,1,0,
0,1,0,0,0,1,0,
0,0,0,1,1,1,0,
0,0,0,1,1,1,1),nrow=5)
Run Code Online (Sandbox Code Playgroud)
结果如下:
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1 0 0 1 0 1 0
[2,] 1 1 0 0 0 1 1
[3,] 0 1 1 0 0 0 1
[4,] 0 1 0 0 0 0 1
[5,] 0 1 0 1 1 0 1
Run Code Online (Sandbox Code Playgroud)
我的规则如下:如果通过UP,DOWN,LEFT,RIGHT,DIAGONAL(任何方向)1将任何一个连接到任何1一个,请继续增加“集群”。根据这些规则(每个点有8个连接点),我可以发现四个孤立1s的唯一簇。
您将如何编码以找到这些组?