资源简介

滴水算法实现,包含按顺序分解数字图片的功能

资源截图

代码片段和文件信息

function [tile1 tile2] = dropfall(tile dir)
width=size(tile2); %列数
height=size(tile1);%行数
cut=zeros(height1);%n行1列
if strcmp(dir‘bottom-right‘)==1
tile=fliplr(tile);
tile=flipud(tile);
elseif strcmp(dir ‘bottom-left‘)==1
tile=flipud(tile);
elseif strcmp(dir ‘top-right‘)==1
    tile=fliplr(tile);
end
%look for starting point to begin cutting at
%Stored under variable start_x
for row=1:height
    found_candidate=0;%找到的标志符号
    found_start=0;    %剪切点的开始
    candidate_x=0;    %候选剪切点的横坐标
    candidate_y=0;    %候选剪切点的纵坐标
    start_x=0;        %剪切点横坐标
    start_y=0;        %剪切点纵坐标
%Check the 搑ight three fourths minus some?of each
%row for the candidate
    for col=round(width/4):width-1 
        pres_pix = tile(rowcol);
        prev_pix = tile(rowcol-1);
        next_pix = tile(rowcol+1);
        if pres_pix==0 & next_pix>0
            found_candidate=1;
            candidate_x=col;
            candidate_y=row;
        end
        if found_candidate==1 & pres_pix==0 & prev_pix>0
            found_start=1;
            start_x=candidate_x+1;
            start_y=candidate_y;
        end
    end
    if found_start==1  %找到候选点就跳出循环,候选点像素为0,旁边都是1
        break;
    end
end

%Start the drop fall!
%Start de?ning the cut
cut(:1)=start_x*ones(height1); %以开始点的横坐标为切割线
row=start_y;
col=start_x;
path_tile=tile;
cut_point_x=0;
cur_point_y=0;
while (row    if path_tile(row+1col)==255
        row=row+1;
    elseif path_tile(row+1col+1)==255
        row=row+1;
        col=col+1;
    elseif path_tile(row+1col-1)==255
        row=row+1;
        col=col-1;
    elseif path_tile(row col+1)==255
        col=col+1;
    elseif path_tile(row col-1)==255
        col=col-1;
    else
        if tile(rowcol)==255
            cut_point_y=row; %point at which the cutting into the black begins
            cut_point_x=col;
        end
        row=row+1;
    end
    path_tile(rowcol)=500; %This marks where the path has been
    cut(row1)=col;
end
width1=max(cut)-1;
min_cut=min(cut);
width2=width-min_cut+1;
tile1=255*ones(height width1);
tile2=255*ones(height width2);
for i=1:height
    x_cut=cut(i);
    tile1(i 1:x_cut-1)=tile(i 1:x_cut-1);
    tile2(i x_cut-min_cut+1: width2)=tile(i x_cut:width);
end

if strcmp(dir‘bottom-right‘)==1
    tile1=fliplr(tile1);
    tile1=flipud(tile1);
    tile2=fliplr(tile2);
    tile2=flipud(tile2);
%Switch tiles 1 & 2 they get reversed because of all the ?ipping
    dummy=tile1;
    tile1=tile2;
    tile2=dummy;
elseif strcmp(dir ‘bottom-left‘)==1
    tile1=flipud(tile1);
    tile2=flipud(tile2);
elseif strcmp(dir ‘top-right‘)==1
    tile1=fliplr(tile1);
    tile2=fliplr(tile2);
    dummy=tile1;
    tile1=tile2;
    tile2=dummy;
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-03-14 11:52  DropFall\
     文件      158774  2013-02-27 02:34  DropFall\c.bmp
     文件       80406  2013-02-27 02:40  DropFall\d.bmp
     文件        2897  2013-03-05 23:37  DropFall\dropfall.asv
     文件        2897  2013-03-05 23:39  DropFall\dropfall.m
     文件         241  2013-02-28 17:33  DropFall\main.m
     文件      236278  2013-02-28 17:21  DropFall\new.bmp
     文件        1501  2013-01-23 13:46  DropFall\tu.jpg
     文件        1198  2013-01-23 13:47  DropFall\tu1.jpg
     文件        1510  2013-01-23 13:47  DropFall\tu2.jpg
     文件        1696  2013-01-23 13:48  DropFall\tu3.jpg
     文件        1759  2013-01-23 13:48  DropFall\tu4.jpg

评论

共有 条评论