我知道如何通过使用rand函数找到一个随机像素,在图像的极限范围内x & y。然后用循环做K次。如何在图像中找到K个随机不同的像素?
但是,我想以更聪明的方式做到这一点,并确保我不会选择相同的 (x,y)坐标。提前致谢!
我知道如何通过使用rand函数找到一个随机像素,在图像的极限范围内x & y。然后用循环做K次。如何在图像中找到K个随机不同的像素?
但是,我想以更聪明的方式做到这一点,并确保我不会选择相同的 (x,y)坐标。提前致谢!
randi
生成1和指定限制之间的整数,您可以使用它与您的图像大小来生成像素坐标。为了确保不再选择相同的坐标,请维护一个矩阵逻辑并标记您正在拾取的像素。 如果你只是想从图像中选择K个随机像素,我会建议使用类似randi(imgSize,K,2)
的东西来生成索引矩阵。您最终可能会在矩阵中出现重复项,并删除那些可以使用和'rows'
参数的项。
似乎这个问题的正确用户名! – David
这里棘手的部分是避免重复。如果您有统计工具箱,你可以使用randsample
:
k = 10;
[m,n] = size(image(:,:,1)); %// works with 3- and 1-channel images
s = randsample(m*n, k); %// get k random indices
[X, Y] = ind2sub([m, n], s); %// convert indices to x,y coordinates
在我的测试运行具有512x512x3图像我得到了以下坐标:(无需工具箱)
X =
464 143 174 235 437 201 348 272 212 260
Y =
499 449 508 148 107 114 341 196 60 224
看看[这个]的答案(http://stackoverflow.com/questions/17177230/randomly-selecting-pixels-in-a-picture-matlab)的问题。 –