宫颈糜烂最好的治疗:再次求救于matlab 高手,也许您觉得很简单的。。。。。。

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 10:47:31
小弟进行图像处理,打算把二值化的图像每个3*3的块都乘以一个3*3的单位矩阵,就是说使得每个块上的像素点,只保留对角线部分为1,其余的使其为0,其中乘法部分该怎么写啊? 小地瞎写了点,如下,根本运行不了,那位大侠帮忙改改啊!!不胜感谢!!!!
I=imread('1.tif');
I1=im2bw(I,0.5);
h=[1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1 ] ;
s=conv2(I1 ,h);
j=blkproc(I1,[5 5],s);
imshow(j) ;
另外,进行此计算的时候,是不是还需要进行8位图或16位图转换什么的啊?也请一并赐教,谢谢,谢谢!!!

你要求对3*3的block操作,为什么程序里面是5*5呢?而且按照你的要求不能用卷积操作,应该用点乘。另外函数s应该另存为m文件,以供调用。

子程序,存为m文件。
function result=baidu_block_fun(x)

h=eye(3);
result = h.*x;

主程序
x=rand(9,9)

y=blkproc(x,[3 3],'baidu_block_fun')

结果是

x =

Columns 1 through 7

0.6728 0.9855 0.6596 0.6234 0.6787 0.5092 0.5029
0.9580 0.0174 0.2141 0.6859 0.0743 0.0743 0.9477
0.7666 0.8194 0.6021 0.6773 0.0707 0.1932 0.8280
0.6661 0.6211 0.6049 0.8768 0.0119 0.3796 0.9176
0.1309 0.5602 0.6595 0.0129 0.2272 0.2764 0.1131
0.0954 0.2440 0.1834 0.3104 0.5163 0.7709 0.8121
0.0149 0.8220 0.6365 0.7791 0.4582 0.3139 0.9083
0.2882 0.2632 0.1703 0.3073 0.7032 0.6382 0.1564
0.8167 0.7536 0.5396 0.9267 0.5825 0.9866 0.1221

Columns 8 through 9

0.7627 0.0356
0.7218 0.0812
0.6516 0.8506
0.7540 0.3402
0.6632 0.4662
0.8835 0.9138
0.2722 0.2286
0.4194 0.8620
0.2130 0.6566

y =

Columns 1 through 7

0.6728 0 0 0.6234 0 0 0.5029
0 0.0174 0 0 0.0743 0 0
0 0 0.6021 0 0 0.1932 0
0.6661 0 0 0.8768 0 0 0.9176
0 0.5602 0 0 0.2272 0 0
0 0 0.1834 0 0 0.7709 0
0.0149 0 0 0.7791 0 0 0.9083
0 0.2632 0 0 0.7032 0 0
0 0 0.5396 0 0 0.9866 0

Columns 8 through 9

0 0
0.7218 0
0 0.8506
0 0
0.6632 0
0 0.9138
0 0
0.4194 0
0 0.6566

>>