【求助】matlab代码解析
%preprocessp1=ones(64,64);bw=im2bw(X,0.5);%转换成二值图像%用矩形框截取图像[i,j]=find(bw==0);imin=min...
%preprocess
p1=ones(64,64);
bw=im2bw(X,0.5);%转换成二值图像
%用矩形框截取图像
[i,j]=find(bw==0);
imin=min(i);
imax=max(i);
jmin=min(j);
jmax=max(j);
bw1=bw(imin:imax,jmin:jmax);
%调整比例,变换成64*64图像
rate=64/max(size(bw1));
bw1=imresize(bw1,rate);
[i,j]=size(bw1);
i1=round((64-i)/2);
j1=round((64-j)/2);
p1(i1+1:i1+i,j1+1:j1+j)=bw1;
p1=-1.*p1+ones(64,64);
%显示预处理的结果
axes(h2);
imshow(p1);
其中,
i1=round((64-i)/2);
j1=round((64-j)/2);
p1(i1+1:i1+i,j1+1:j1+j)=bw1;
p1=-1.*p1+ones(64,64);
这段代码的作用是什么?什么意思?整个代码的作用是什么?麻烦详细说明,谢谢了! 展开
p1=ones(64,64);
bw=im2bw(X,0.5);%转换成二值图像
%用矩形框截取图像
[i,j]=find(bw==0);
imin=min(i);
imax=max(i);
jmin=min(j);
jmax=max(j);
bw1=bw(imin:imax,jmin:jmax);
%调整比例,变换成64*64图像
rate=64/max(size(bw1));
bw1=imresize(bw1,rate);
[i,j]=size(bw1);
i1=round((64-i)/2);
j1=round((64-j)/2);
p1(i1+1:i1+i,j1+1:j1+j)=bw1;
p1=-1.*p1+ones(64,64);
%显示预处理的结果
axes(h2);
imshow(p1);
其中,
i1=round((64-i)/2);
j1=round((64-j)/2);
p1(i1+1:i1+i,j1+1:j1+j)=bw1;
p1=-1.*p1+ones(64,64);
这段代码的作用是什么?什么意思?整个代码的作用是什么?麻烦详细说明,谢谢了! 展开
1个回答
展开全部
首先P1是一个全一矩阵
i1=round((64-i)/2);
j1=round((64-j)/2);
p1(i1+1:i1+i,j1+1:j1+j)=bw1;%到这的目的是将bw1图像在P1从i1+1:i1+i,j1+1:j1+j的显示出来。
p1=-1.*p1+ones(64,64);%由于是二值图像,此句话的目的是在上一步的基础上取反,即黑色变白色,白色变黑色。
整段代码的作用应该是将要处理的图像转换成二值图像,并变换成64*64图像,并且黑白取反。
i1=round((64-i)/2);
j1=round((64-j)/2);
p1(i1+1:i1+i,j1+1:j1+j)=bw1;%到这的目的是将bw1图像在P1从i1+1:i1+i,j1+1:j1+j的显示出来。
p1=-1.*p1+ones(64,64);%由于是二值图像,此句话的目的是在上一步的基础上取反,即黑色变白色,白色变黑色。
整段代码的作用应该是将要处理的图像转换成二值图像,并变换成64*64图像,并且黑白取反。
更多追问追答
追问
i1=round((64-i)/2);
j1=round((64-j)/2);
为什么这里要这样做呢?还是不明白。。
追答
这个我不清楚,你从哪看得,应该跟整个程序的目的有关,若你能说的详细点更好
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询