一个图像目标区域提取的问题

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是需要与原图像点乘的矩阵。

怎么点乘??

你可能感兴趣的:(matlab)