function bw2 = removeLargeArea(varargin)
%BWAREAOPEN Remove small objects from binary image.
% BW2 = BWAREAOPEN(BW,P) removes from a binary image all connected
% components (objects) that have fewer than P pixels, producing another
% binary image BW2. This operation is known as an area opening. The
% default connectivity is 8 for two dimensions, 26 for three dimensions,
% and CONNDEF(NDIMS(BW),'maximal') for higher dimensions.
%
% BW2 = BWAREAOPEN(BW,P,CONN) specifies the desired connectivity. CONN
% may have the following scalar values:
%
% 4 two-dimensional four-connected neighborhood
% 8 two-dimensional eight-connected neighborhood
% 6 three-dimensional six-connected neighborhood
% 18 three-dimensional 18-connected neighborhood
% 26 three-dimensional 26-connected neighborhood
%
% Connectivity may be defined in a more general way for any dimension by
% using for CONN a 3-by-3-by- ... -by-3 matrix of 0s and 1s. The
% 1-valued elements define neighborhood locations relative to the center
% element of CONN. CONN must be symmetric about its center element.
%
% Class Support
% -------------
% BW can be a logical or numeric array of any dimension, and it must be
% nonsparse.
%
% BW2 is logical.
%
% Example
% -------
% Remove all objects in the image text.png containing fewer than 50
% pixels.
%
% BW = imread('text.png');
% BW2 = bwareaopen(BW,50);
% imshow(BW);
% figure, imshow(BW2)
%
% See also BWCONNCOMP, CONNDEF, REGIONPROPS.
% Copyright 1993-2011 The MathWorks, Inc.
% $Revision: 1.10.4.9 $ $Date: 2011/11/09 16:48:52 $
% Input/output specs
% ------------------
% BW: N-D real full matrix
% any numeric class
% sparse not allowed
% anything that's not logical is converted first using
% bw = BW ~= 0
% Empty ok
% Inf's ok, treated as 1
% NaN's ok, treated as 1
%
% P: double scalar
% nonnegative integer
%
% CONN: connectivity
%
% BW2: logical, same size as BW
% contains only 0s and 1s.
[bw,p,conn] = parse_inputs(varargin{:});
CC = bwconncomp(bw,conn);
area = cellfun(@numel, CC.PixelIdxList);
idxToKeep = CC.PixelIdxList(area <= p);
idxToKeep = vertcat(idxToKeep{:});
bw2 = false(size(bw));
bw2(idxToKeep) = true;
%%%
%%% parse_inputs
%%%
function [bw,p,conn] = parse_inputs(varargin)
narginchk(2,3)
bw = varargin{1};
validateattributes(bw,{'numeric' 'logical'},{'nonsparse'},mfilename,'BW',1);
if ~islogical(bw)
bw = bw ~= 0;
end
p = varargin{2};
validateattributes(p,{'double'},{'scalar' 'integer' 'nonnegative'},...
mfilename,'P',2);
if (nargin >= 3)
conn = varargin{3};
else
conn = conndef(ndims(bw),'maximal');
end
iptcheckconn(conn,mfilename,'CONN',3)
清风明月来几时
- 粉丝: 1784
- 资源: 254
最新资源
- qaxbrowser-1.1.32574.52.exe (奇安信浏览器windows安装包)
- C#编写modbus tcp客户端读取modbus tcp服务器数据
- 某房地产瑞六补环境部分代码
- 基于Matlab实现无刷直流电机仿真(模型+说明文档).rar
- AllSort(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)
- 模拟qsort,改造冒泡排序使其能排序任意数据类型,即日常练习
- carsim+simulink联合仿真实现变道 包含路径规划算法+mpc轨迹跟踪算法 可选simulink版本和c++版本算法 可以适用于弯道道路,弯道车道保持,弯道变道 carsim内规划轨迹可视化
- 数组经典习题之顺序排序和二分查找和冒泡排序
- 永磁同步电机神经网络自抗扰控制,附带编程涉及到的公式文档,方便理解,模型顺利运行,效果好,位置电流双闭环采用二阶自抗扰控制,永磁同步电机三闭环控制,神经网络控制,自抗扰中状态扩张观测器与神经网络结合
- 基于 Oops Framework 提供的游戏项目开发模板,项目中提供了最新版本 Cocos Creator 3.x 插件与游戏资源初始化通用逻辑
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈