您可以使用 k-means 执行图像量化。所以你知道你必须以这样一种方式对图像进行二值化,使黄色阴影变成白色,而其他一切都变成黑色。因此,将您的图像分成合适数量的集群(4 个可能有效)。2 用于黄色色调,2 用于其他色调。不要忘记预定义初始质心。在此之后,您可以说,被标记为黄色质心的像素被重新标记为一个。这可能会奏效。
k-means 颜色量化过程的细节: 1. 首先将图像中的所有像素收集在一个nx3
矩阵中。然后使用 k-means 将nx3
矩阵划分为 3 或 4 个簇。2. 在将其划分为 4 个集群之前,预定义质心。您可以通过在此处阅读 MATLAB kmeans 算法的文档来做到这一点. 您必须设置的参数是 kmeans 的 'options' 字段中的 'start'。3. 所以黄色(和其他“接近”它的颜色)应该属于预定义的集群。(因此,如果您为黄色定义了集群 1 和 2,那么您应该将所有黄色像素标记为 1 或 2。其他像素将标记为 3 或 4。) 4. 现在,将图像转换为二进制,这样像素落入黄色簇(即本例中的簇 1 和 2),应设为 1,其他将为零。
有关预定义集群的更多详细信息:来自 kmeans 文档:起始质心可以在start
参数中定义为质心起始位置kmeans
的k-by-p
矩阵。在您的情况下,它将是RGB
黄色的值。查看图像中存在的黄色的一些像素值。如果它们的偏差太大,则为它们定义两个集群,否则为一个。如果您定义两个,那么您的start
参数将具有2x3
矩阵。您应该始终记住,质心中的列数将等于数据中的列数。
我希望这可以在更高的层次上使过程更加清晰。如果您有任何错误,请发布您的代码。