gpt4 book ai didi

opencv - 准备好数据(每行一个样本)以使用k均值进行聚类吗?

转载 作者:行者123 更新时间:2023-12-02 16:57:14 25 4
gpt4 key购买 nike

我正在尝试使用kmeans函数对关键点(使用SIFT检测到)进行聚类,但是在准备使用它时遇到了麻烦。

使用以下代码将关键点保存到xml / yml文件中:

int _tmain(int argc, _TCHAR* argv[])
{
Mat img;

img = imread("c:\\box.png", 0);

SiftFeatureDetector detector;
vector<KeyPoint> keypoints;
detector.detect(img, keypoints);



FileStorage fs("keypoint1.xml", FileStorage::WRITE);
write(fs, "keypoints1", keypoints);
fs.release();

xml保存用空格分隔的关键点,而yml使用逗号分隔关键点。
%YAML:1.0
keypoints1: [ 6.1368021965026855e+000, 5.2649226188659668e+000,
4.0740542411804199e+000, 2.7943280029296875e+002, 0., 9109760, -1,
6.1368021965026855e+000, 5.2649226188659668e+000,
4.0740542411804199e+000, 3.4678604125976562e+002, 0., 9109760, -1,
1.5903041076660156e+002, 2.4698186874389648e+001,
4.1325736045837402e+000, 9.7977493286132813e+001, 0., 10158336, -1,
1.6808378601074219e+002, 2.5029441833496094e+001,
4.2399377822875977e+000, 9.7380126953125000e+001, 0., 11993344, -1,
1.9952423095703125e+002, 4.4663669586181641e+001,
5.0049328804016113e+000, 5.7439949035644531e+001, 0., 7275008, -1,
3.0947158813476563e+002, 4.6865818023681641e+001,......................

kmeans函数要求每个样本输入为一行。有人可以解释一下吗,我是说上面的文件可以用作一行吗?使用FileStorage读取方法是否有资格获得kmeans?

我要添加到文件或从文件中读取文件的原因是,假设我有100个需要聚簇其关键点的图像。我想将所有这些文件附加到一个巨大的文件中并将其群集。

谢谢

最佳答案

SIFT特征是一回事,每个特征的值构成 vector 。从SIFT关键点提取SIFT描述符时,您正在提取4x4区域中8个可能方向的梯度大小。因此,每个关键点都有一个 vector ,具有128个要素,或者,如果需要,可以具有128个维度。它与在欧几里得空间中表示一个点相同,但是没有三个维度,而是有128个。常规SIFT描述符的一种变体效果更好。密集SIFT。与其根据高斯差分来计算关键点,不如在图像顶部放置一个矩形网格以提取描述符。在Google中寻找vl_feat。

关于opencv - 准备好数据(每行一个样本)以使用k均值进行聚类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13422553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com