单条件语句
格式1
简单例子如下
1 2 3 4
| a=1; b=2; c=0; if a+b==3 c=3; end
|
格式2
1 2 3 4 5
| if 逻辑表达式 程序语句组1 else 程序语句组2 end
|
简单例子如下
1 2 3 4 5 6
| a=1; b=2; if a>2 c=3; else c=0; end
|
多条件语句
1 2 3 4 5 6 7
| if 条件1 程序语句组1 elseif 条件2 程序语句组2 else 语句组n end
|
简单例子:
1 2 3 4 5 6 7 8
| a=1;b=2;c=0; if a>6 d=3; elseif b<1 d=5; elseif c==0 d=100; end
|
for-end循环
格式
1 2 3 4
| for 循环变量=初值:步长:终值 循环体语句组 end
|
简单例子
1 2 3 4
| s=0; for i=1:10 s=s+i; end
|
while-end循环
格式
简单例子
1 2 3 4 5 6
| s=0; i=1; while i<=10 s=s+i; i=i+1; end
|
在这两个循环中可以使用break和continue
简单应用:求[10,20]之间第一个被3整除的整数
1 2 3 4 5 6 7 8
| for i=10:20 if rem(i,3)~=0 continue else break end end disp(i)
|
将图像最亮点找出来的两种方法
循环方法
1 2 3 4 5 6 7 8 9 10 11 12
| f=imread('cameraman.tif'); [m,n]=size(f); s = 0; for i=1:m for j=1:n if f(i,j)>s s=f(i,j); m_pos=i; n_pos=j; end end end
|
函数方法
1 2 3
| f = imread('cameraman.tif'); i_max=max(f(:)); [i,j] = find(f==i_max)
|
注意:函数方法是能够找出所有最亮点,而之前的那个只能找到第一个
练习
练习1
练习内容
统计一幅灰度图像中像素值大于等于200的像素个数
代码
1 2 3 4 5 6 7 8 9 10 11
| I = imread('cameraman.tif'); s = 0; [m,n] = size(I); for i=1:m for j=1:n if I(i,j)>=200 s = s+1; end end end s
|
练习2
练习内容
将一幅灰度图像中灰度值小于50的像素置黑,灰度值大于200的置白
代码
1 2 3 4 5 6 7 8 9 10 11 12
| I = imread('cameraman.tif'); [m,n] = size(I); for i=1:m for j=1:n if I(i,j)<50 I(i,j)=0; elseif I(i,j)>200 I(i,j)=255; end end end imshow(I);
|
练习3
练习内容
计算灰度图像中像素值大于100且小于200的像素个数
代码
1 2 3 4 5 6 7 8 9 10 11
| I = imread('cameraman.tif'); [m,n] = size(I); s = 0; for i=1:m for j=1:n if I(i,j)>100 && I(i,j)<200 s = s+1; end end end s
|
练习4
练习内容
将图像中的最亮点找出来,并记录其位置及灰度值
代码
1 2 3 4 5 6 7 8 9 10 11 12
| I = imread('cameraman.tif'); [m,n] = size(I); b_x = 1; b_y = 1; b = 0; for i=1:m for j=1:n if I(i,j)>b b_x = i; b_y = j; b = I(i,j); end end end
|
练习5
练习内容
r表示原始图像的像素值,s表示增强后的图像像素值,观察对比结果
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| I = imread('cameraman.tif'); I1 = I; I = im2double(I); [m,n] = size(I); for i=1:m for j=1:n if I(i,j)<0.35 I(i,j) = 0.3*I(i,j); elseif I(i,j)>0.65 I(i,j) = 1+0.3*(I(i,j)-1); else I(i,j) = 0.105+2.6333*(I(i,j)-0.35); end end end subplot(1,2,1); imshow(I1); subplot(1,2,2); imshow(I);
|
效果