MATLAB代码:
%边界跟踪 bwtraceboundary 函数
clc
I = imread('../deep.jpg');
figure
imshow(I);
title('原始图像');
I1 = rgb2gray(I); %彩图转换成灰度图像
%使用阈值 目的是将图像转换为二进制图像
threshold = graythresh(I1); %将灰度值转化为二值图像所需要的门限
BW = im2bw(I1,threshold); %将灰度图像转化为二值图像
figure
imshow(BW);
title('二值图像');
%[labeled,numObjects] = bwlabel(BW,8); 图像中联通区域的个数
dim=size(BW); %dim是计算图像的大小[row,col]
col=round(dim(2)/2)-90; %计算起始点列坐标
row=find(BW(:,col),1); %计算起始点行坐标 返回这个矩阵中值为1的第一个元素的坐标
%row = round(dim(1)/2)+100; %计算行坐标
%col = find(BW(row,:),1); %计算列坐标
connectivity=8;
num_points=9600;
contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_points);
%提取边界
%新建与源图像一样大小的0矩阵
n1=zeros(dim(1),dim(2));
%使这个矩阵所在的像素坐标的值为1
for ix=1:1486%contour的元素个数
x1=contour(ix,1);
y1=contour(ix,2);
n1(x1,y1)=1;
end
%怎样将这个矩阵与原像素点乘就提取出来了???
figure
imshow(I1);
hold on;
plot(contour(:,2),contour(:,1), 'g','LineWidth' ,2);
title('边界跟踪图像');
figure,imshow(n1);%边界图像
其中I是灰度图像,I1是灰度图像,BW是二值图像,contour是边界的像素点的n*2矩阵,n1是需要与原图像点乘的矩阵。
怎么点乘??