前辈的方法我还没有完全领会。下边是我的解决办法,比较笨。由于速度比较慢,因此做成了子函数。在需要的时候,可以直接生成大小为n,0像素带宽为d的矩阵供使用- function md=matdge(n,d)
- k=ones(n,n,8);
- [X,Y]=meshgrid(1:n);
- o=floor((n+1)/2);
- if mod(d,2)==0
- b=o-d/2:o+d/2-1;
- else
- b=o-floor(d/2):o+floor(d/2);
- end
- C=ones(n);C(b,:)=0;
- ang=22.5:22.5:157.5;
- for i=1:length(ang)
- d=imrotate(C,ang(i),'crop');
- d(((X-o).^2+(Y-o).^2)>o^2-15)=1;
- k(:,:,8-i)=d;
- %figure,imshow(d)
- end
- md=k;
复制代码 n是要生成矩阵的大小,d是0像素带的宽度,主要使用了图像的旋转函数来完成。
因为程序的总体效率不高,所以希望能看到更有效的方案。
[ 本帖最后由 花如月 于 2007-11-4 14:12 编辑 ] |