您的位置:首页 > 其它

pdf417项目:二维码的边缘检测

2016-11-17 15:52 162 查看
function [ ost ] = edgeExtraction( ost )

[row,col] = size(ost);

src = ost;

%边缘检测算子

topso=[1 1 1;0 0 0;-1 -1 -1];

% botso=[-1 -1 -1;0 0 0;1 1 1];

lefso=[1 0 -1;1 0 -1;1 0 -1];

% rigso=[-1 0 1;-1 0 1;-1 0 1];

for i=2:row-1

    for j=2:col-1

        %取出以改点为中心,与算子同样大小的区域temp

        temp=src(i-1:i+1,j-1:j+1);

        %垂直方向上topso与temp点乘再将每个矩阵每个值加起来,记为tbs

        tbs =abs(sum(sum(topso.*temp)));

        %水平方向上lefso与temp点乘再将每个矩阵每个值加起来,记为lbs

        lbs =abs(sum(sum(lefso.*temp)));

        if (tbs==0) && (lbs==0)  %思考:这种情况是什么意思?????????????????????????????????

            ost(i,j)=255;

        end

    end

end

figure,imshow(ost);

title('3.边缘检测之后!');
end

消除垂直边缘:

function [ dst ] = eliminateVerticalEdges(ost)

%%消除垂直边缘

[row,col] = size(ost);

src = ost;

dst = ost;

for j=1:col

    for i=1:row-1

        if src(i+1,j)==src(i,j)

            dst(i,j)=255;

        end

    end

end

figure,imshow(dst);

title('4.消除垂直边缘后!dst')

end

消除水平边缘:

function [ ost ] = eliminateHorizontalEdges(ost,src ) %ost和src是一样的

[row,col] = size(ost);

dst = ost;

for i=1:row

    for j=2:col

        if src(i,j-1)==src(i,j)

            dst(i,j)=255;

        end

    end

end

ost = (dst==255);

figure,imshow(ost);

title('6.消除水平边缘后!');

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: