怎么将一副图片形成01点阵,用MATLAB.的方法?也就是逐像素提取方法的具体语句是什么呀?非常感谢!

 我来答
zcy_179
2011-03-28 · TA获得超过294个赞
知道答主
回答量:53
采纳率:0%
帮助的人:43万
展开全部
你这个问题问的都不清楚
不知道你是要获得图像的各个位平面(0-1二值图像)还是对图像进行二值化得到0-1图像
如果是提取位平面,那语句bitget(A,i)即可,其中A表示某个灰度图像,i表示第i位,一般可取0-8任一值。
例:
A=fix(rand(4)*255)

A =

207 161 244 244
230 24 246 123
32 71 40 204
232 139 247 36

>> bitget(A,1)

ans =

1 1 0 0
0 0 0 1
0 1 0 0
0 1 1 0

如果是图像二值化,则可以简单的使用otsu算法
p=unit8(A); %强制类型转换为无符号8位
t=graythresh(p);%求阈值
bw=im2bw(p,t); %二值化
t =
0.5863

bw =

1 1 1 1
1 0 1 0
0 0 0 1
1 0 1 0

如果只想生成一个任意的m x n的 0-1矩阵,则直接使用
A=round(rand(m,n)) 即可
kuanghulin
2011-03-28 · TA获得超过516个赞
知道答主
回答量:162
采纳率:0%
帮助的人:211万
展开全部
这个你需要一个阈值 比如像素值大于60则为1 小于60则为0
I=imread('***.jpg');
Img=rgb2gray(I);
[H W]=size(Img);
for k=1:H
for m=1:W
if(Img(k,m)>60)
Img(k,m)=1;
else
Img(k,m)=0;
end
end
end
更多追问追答
追问
嗯嗯,真好,对了,就是形成的点阵特别大,怎么形成小一点的啊,比如16*16的,这个都好几百行了,呜呜,谢谢了!
追答
这个也不难 比如你想M*N
M=16;
N-16;
PStep=16;
I=imread('***.jpg');
Img=rgb2gray(I);
[H W]=size(Img);
h=floor((H-N)/PStep)+1;
w=floor((W-M)/PStep)+1;
for k=1:h
for m=1:w
SImg=Img((k-1)*PStep+1:k*PStep,(m-1)*PStep+1:m*PStep) ;
SImg=SImg(:);
i_sum=sum(SImg) ;
ave=i_sum/M*N;
if(ave>60)
PotImg(k,m)=1;
else
PotImg(k,m)=0;
end
end
end
%阈值的话 你可以根据你算出的数值来定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式