• 大小: 2.88MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-20
  • 语言: Matlab
  • 标签: 图像处理  matlab  

资源简介

MATLAB常用图像处理算法演示程序,包含各种常用的图像处理算法

资源截图

代码片段和文件信息

function rc_new = bound2eight(rc)
%BOUND2EIGHT 将4连接边界转换为8连接边界。
%   RC_NEW = BOUND2EIGHT(RC) 将4连接边界转换为8连接边界。
%   RC is a P-by-2矩阵 其每行包含图像边界像素的行列坐标。RC必须是一个闭合边界;
%   换句话说,RC的最后一行一定与最后一行相等。 BOUND2EIGHT 删除了对于4连接边界
%   必要但对于8连接边界不必要的边界像素。 RC_NEW是一个Q-by-2矩阵其中Q<=P. 

%   Copyright 2002-2004 R. C. Gonzalez R. E. Woods & S. L. Eddins
%   Digital Image Processing Using MATLAB Prentice-Hall 2004
%   $Revision: 1.6 $  $Date: 2003/11/21 14:19:38 $

if ~isempty(rc) & ~isequal(rc(1 :) rc(end :))    %如果边界不连续
   error(‘Expected input boundary to be closed.‘);  %报错
end

if size(rc 1) <= 3 %如果边界点小于等于3
   % 退化情况.
   rc_new = rc; %结果即为RC
   return;
end

% 删除最后一行,因为闭合边界最后一行与第一行相等
rc_new = rc(1:end - 1 :);

% 删除四个相连的直角turn中间的像素。 我们可以在矢量fashion中这样做,但是
% 不能一次全实现。与函数bwmorph函数中‘thin’算法的方式相似,我们将首先
% 删掉行列坐标均为偶数的四个相连直角反转中间的像素;然后时行坐标为偶数
% 列坐标为奇数的;再然后是行坐标是奇数列坐标偶数的;最后是行列坐标均为奇
% 数的
remove_locations = compute_remove_locations(rc_new);    %得到remove的区域
field1 = remove_locations & (rem(rc_new(: 1) 2) == 0) & ...%采用求余数函数得到行列坐标均为偶数的区域
         (rem(rc_new(: 2) 2) == 0);
rc_new(field1 :) = []; %删除此区域

remove_locations = compute_remove_locations(rc_new);    
field2 = remove_locations & (rem(rc_new(: 1) 2) == 0) & ...%采用求余数函数得到行坐标为偶数,列坐标为奇数的区域
         (rem(rc_new(: 2) 2) == 1);
rc_new(field2 :) = []; %删除此区域

remove_locations = compute_remove_locations(rc_new);
field3 = remove_locations & (rem(rc_new(: 1) 2) == 1) & ...%采用求余数函数得到行坐标为奇数,列坐标为偶数的区域
         (rem(rc_new(: 2) 2) == 0); %删除此区域
rc_new(field3 :) = []; %删除此区域

remove_locations = compute_remove_locations(rc_new);
field4 = remove_locations & (rem(rc_new(: 1) 2) == 1) & ...%采用求余数函数得到行列坐标均为奇数的区域
         (rem(rc_new(: 2) 2) == 1);
rc_new(field4 :) = []; %删除此区域

% Make the output boundary closed again.
rc_new = [rc_new; rc_new(1 :)];

%-------------------------------------------------------------------%
function remove = compute_remove_locations(rc)

% 循环差分.
d = [rc(2:end :); rc(1 :)] - rc; 

% d的每行与其循环情况下的下一行做点积。
d1 = [d(2:end :); d(1 :)];    %得到d的移1位循环向量
dotprod = sum(d .* d1 2);  %点积后每行元素进行相加

% 东西南北边界点的位置跟随一个直角变换
remove = ~all(d 2) & (dotprod == 0);

%但是我们真的想要删除turn的中间点像素 
remove = [remove(end :); remove(1:end - 1 :)];

if ~any(remove) %如果不存在需要删除的点
   done = 1;    %结束
else    %否则
   idx = find(remove);  %删除此点
   rc(idx(1) :) = [];
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-06-02 22:41  数字图像处理MATLAB编程学习及演示软件\
     目录           0  2013-06-02 22:41  数字图像处理MATLAB编程学习及演示软件\ImageProcessing\
     目录           0  2013-06-02 22:41  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\
     目录           0  2013-06-02 22:41  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\
     文件        2906  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\bound2eight.m
     文件        2601  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\bound2four.m
     文件        2039  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\bound2im.m
     文件        5480  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\boundaries.m
     文件        3085  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\bsubsamp.m
     文件       49515  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\classic.jpg
     文件      302632  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\code.asv
     文件        5450  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\code.fig
     文件      295296  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\code.m
     文件        2353  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\colorgrad.m
     文件        2428  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\colorseg.m
     文件         935  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\color_medical.asv
     文件         935  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\color_medical.m
     文件         792  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\color_medical2.asv
     文件         688  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\color_medical2.m
     文件        2186  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\color_medical3.m
     文件         860  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\color_remote.asv
     文件         889  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\color_remote.m
     文件        1405  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\connectpoly.m
     文件        6622  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\diameter.m
     文件        1214  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\edge_gaijinsobel.m
     文件         466  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\edge_gauss.asv
     文件         520  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\edge_gauss.m
     文件        2291  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\edge_kirsch.asv
     文件        2291  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\edge_kirsch.m
     文件         792  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\edge_prewitt.m
     文件         297  2013-01-21 14:59  数字图像处理MATLAB编程学习及演示软件\ImageProcessing-new\ImageProcessing\edge_roberts.asv
............此处省略199个文件信息

评论

共有 条评论