clc
clear all
%reading and showing
f1=imread('foreground.jpg') %读图到f1
%converting color image to grayimage
f2=rgb2gray(f1) %变成灰度图象
figure(1),imshow(f2)%显示
%reading and showing
f3=imread('background.jpg') %读背景图
%converting color image to grayimage
f4=rgb2gray(f3) %转成灰度图象
figure(2),imshow(f4) %显孙陵示凳凯信背景图
%background subtracting
f5=abs(double(f2)-double(f4)) %第一幅图减去背景图
[M N]=size(f5)
T=20
for i=1:M
for j=1:N
if f5(i,j)>T
f5(i,j)=255
else
f5(i,j)=0
end
end
end
f5=uint8(f5)%运算后的图转为uint8型
figure(3)
imshow(f5) % 显示减去背景后的图
% imclose the image
se=strel('disk',3)
f6=imclose(f5,se) %用半径为3的圆对图进行闭 *** 作
figure(4)
imshow(f6) %显示结果
% fill the image
f8=imfill(f6) %对图象进行填充
figure(5)
imshow(f8) %显示填充结果
% smooth the image
f9=double(f8)/255
f10=medfilt2(f9,[3 3]) %中值滤波
figure(6)
imshow(f10,[]) %对图象进行平滑,并显示结果
% add label to the image
bw1=im2bw(f10)%将图形转成二值图像
[x,num]=bwlabel(bw1,4) %对4连通的连通域进行标注
% calculate the number of pixels of each labeled area
long=1:num
for i=1:num
[r,c]=find(x==i) %计算每个连通域枣轮的像素数
rc=[r c]
long(i)=size(rc,1)
end
% display the number of pixels of each labeled area
for j=1:num
disp(long(j)) %显示每个连通域的像素数
end
% calculate which area has the biggest number of pixels
max=0
for k=1:num
if(long(k)>max) %计算象素数最多的连通域
max=long(k)
m=k
end
end
% the label of the biggest area
m %最大的连通域的标号
% the number of pixels of the biggest area
max %最大的连通域的象素数
% get the image of the biggest area
[row column]=size(x)
for i=1:row
for j=1:column
if(x(i,j)==m) %取图像的最大连通域
x(i,j)=m
else x(i,j)=0
end
end
end
se=strel('disk',2)
x=imerode(x,se) %用半径为2的圆腐蚀图像
% display the image
figure(7),imshow(x) %显示结果
% get the edge of the image
y=edge(x,'canny') %用canny方法提取边界
figure(8),imshow(y) %显示提取的边界
你这个是提取原图像中最大物体的边界的程序吧!
好长阿,看得我眼睛都酸了!
给我追加一点儿辛苦分吧!
过来人的建议,用好python就好。matlab功能基本上芦改都能用python实现,即使现在不能,不就的将来一定能,matlab这个东西会逐渐被取代掉的。而且两个同属于脚本语言,用好python,读matlab程序不竖液难。matlab现在主要陪纤判强在simulink,信息工程专业能用上的不多。
b=load('c:\xinhao001.mat')这句就是在读取滚知数据,读取的数据路径就是C盘。当然如果你的衫备山数据不再C盘,再这样运行,matlab就会报错。这个你可以按照你数据的所在位置写路径。
b =
y: [1x901 double]
t: [1x901 double]
这句自然就是你的xinhao001.mat这个文件中所读出来的变量y,t及其分别或中的数据了。
(关于load函数,还有一种用法就是:load xinhao001.mat。但是这种用法要求该文件在当前活动路径)
9月
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)