Matlab:如何从一幅图像中随机地取10%的点

比如说我有一幅lena图像(大小为256*256),想随机取10%的点。处理后得到的图像与原图像大小相同,10%的点为有效点,有效点的下标仍是原下标,除有效点以外的点的灰... 比如说我有一幅lena图像(大小为256*256),想随机取10%的点。处理后得到的图像与原图像大小相同,10%的点为有效点,有效点的下标仍是原下标,除有效点以外的点的灰度值为0 展开
 我来答
jimtien
2015-05-21 · TA获得超过7654个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1112万
展开全部

先获得图像像素点总数, 其10%为样点数, 然后随机产生坐标点取样. 以下代码以彩色图为例

clear all;close all;
I = imread('lena_small.jpg');
[m,n,~]=size(I);

%采样数据总数
amount = fix(m*n*0.1);
sampledata = zeros(amount,3);
%随机生成采样点的坐标
for j=1:amount
    x = randi(m,1,1);    
    y = randi(n,1,1);        
    %取得的数据
    sampledata(j,:) = I(x,y,:);
    %在图上标注为白色
    I(x,y,:)=[255 255 255];
end
%显示采样点
imshow(I);

wenbo13579
2010-07-09 · 超过11用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:27.7万
展开全部

不知道是不是你需要的答案!

如果是!

请采纳!

示例:

>> x=0:2*pi/360:2*pi;

>> y=sin(x);

>> [newx,newy]=myfun(x,y);

>> plot(newx,newy)

m函数:

function [newx,newy]=myfun(x,y)

%对于一维数组,在已知绘图的数据的条件下

%随即取10%的点

n=length(y);

r=round(rand(round(n/10),1)*n);

r=sort(r);

%选出取出的点赋值给newx,newy

newx=x(r);newy=y(r);

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泣晴利0I46eb
2010-07-09 · TA获得超过287个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:0
展开全部
图像也是一个矩阵,根据行、列的大小(比如10*10=100),产生一个10%的随机数矩阵(1*10=10),值的范围从1到100,然后把对应的点都取出来就好了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式