代碼如下:
function [I2,locations] = imfill(varargin)[I,locations,conn,do_fillholes] = parse_inputs(varargin{ :});if do_fillholesif islogical(I)mask = uint8(I);elsemask = I;endmask = padarray(mask, ones(1,ndims(mask)), -Inf, 'both');mask = imcomplement(mask);marker = mask;idx = cell(1,ndims(I));for k = 1:ndims(I)idx{ k} = 2:(size(marker,k) - 1);endmarker(idx{ :}) = -Inf;I2 = imreconstruct(marker, mask, conn);I2 = imcomplement(I2);I2 = I2(idx{ :});if islogical(I)I2 = logical(I2);endelse mask = imcomplement(I);marker = false(size(mask));marker(locations) = mask(locations);marker = imreconstruct(marker, mask, conn);I2 = I | marker;end%%%%%% Subfunction ParseInputs%%%function [IM,locations,conn,do_fillholes] = parse_inputs(varargin)narginchk(1,3);IM = varargin{ 1};validateattributes(IM, { 'numeric' 'logical'}, { 'nonsparse' 'real','nonnan'}, ...mfilename, 'I1 or BW1', 1);do_interactive = false;do_fillholes = false;conn = conndef(ndims(IM),'minimal');do_conn_check = false;locations = [];do_location_check = false;switch nargincase 1if islogical(IM)% IMFILL(BW1)do_interactive = true;else% IMFILL(I1)do_fillholes = true;endcase 2if islogical(IM)if ischar(varargin{ 2})% IMFILL(BW1, 'holes')validatestring(varargin{ 2}, { 'holes'}, mfilename, 'OPTION', 2);do_fillholes = true;else% IMFILL(BW1, LOCATIONS)locations = varargin{ 2};do_location_check = true;endelseif ischar(varargin{ 2})% IMFILL(I1, 'holes')validatestring(varargin{ 2}, { 'holes'}, mfilename, 'OPTION', 2);do_fillholes = true;else% IMFILL(I1, CONN)conn = varargin{ 2};do_conn_check = true;conn_position = 2;do_fillholes = true;endendcase 3if islogical(IM)if ischar(varargin{ 3})% IMFILL(BW1,CONN,'holes')validatestring(varargin{ 3}, { 'holes'}, mfilename, 'OPTION', 3);do_fillholes = true;conn = varargin{ 2};do_conn_check = true;conn_position = 2;elseif isequal(varargin{ 2}, 0)% IMFILL(BW1,0,CONN)do_interactive = true;conn = varargin{ 3};do_conn_check = true;conn_position = 2;else% IMFILL(BW1,LOCATIONS,CONN)locations = varargin{ 2};do_location_check = true;conn = varargin{ 3};do_conn_check = true;conn_position = 3;endendelse% IMFILL(I1,CONN,'holes')validatestring(varargin{ 3}, { 'holes'}, mfilename, 'OPTION', 3);do_fillholes = true;conn = varargin{ 2};do_conn_check = true;conn_position = 2;endendif do_conn_checkiptcheckconn(conn, mfilename, 'CONN', conn_position);endif do_location_checklocations = check_locations(locations, size(IM)); elseif do_interactivelocations = get_locations_interactively(IM);end% Convert to linear indices if necessary.if ~do_fillholes && (size(locations,2) ~= 1)idx = cell(1,ndims(IM));for k = 1:ndims(IM)idx{ k} = locations(:,k);endlocations = sub2ind(size(IM), idx{ :});end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function locations = check_locations(locations, image_size)% Checks validity of LOCATIONS. Converts LOCATIONS to linear index% form. Warns if any locations are out of range.validateattributes(locations, { 'double'}, { 'real' 'positive' 'integer' '2d'}, ...mfilename, 'LOCATIONS', 2);num_dims = length(image_size);if (size(locations,2) ~= 1) && (size(locations,2) ~= num_dims)error(message('images:imfill:badLocationSize', iptnum2ordinal( 2 )));endif size(locations,2) == 1bad_pix = (locations < 1) | (locations > prod(image_size));elsebad_pix = zeros(size(locations,1),1);for k = 1:num_dimsbad_pix = bad_pix | ((locations(:,k) < 1) | ...(locations(:,k) > image_size(k)));endendif any(bad_pix)warning(message('images:imfill:outOfRange'));locations(bad_pix,:) = [];end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function locations = get_locations_interactively(BW)% Display image and give user opportunity to select locations with the mouse.if ~ismatrix(BW)error(message('images:imfill:badInteractiveDimension'))endif isempty(BW)error(message('images:imfill:emptyImage'))endimshow(BW)[xi,yi] = getpts;c = round(axes2pix(size(BW,2), [1 size(BW,2)], xi));r = round(axes2pix(size(BW,1), [1 size(BW,1)], yi));locations = sub2ind(size(BW),r,c);
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。
197277.html
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
d2c是什么牌子?D2C——中國首家設計師自由平臺。D2C是英文DESIGNER-TO-CUSTOMER(設計師對客戶)的縮寫。涵義是設計師通過“聚需求,團寶貝”的方式直接面向消費者,通過強大的營銷平臺,設計師直接傳達自己的設計理念和相關設計產品,達到出售原創產品的目的,使設計師的原創設計價值得到充分的體現,客戶得到人性化的貼心服務。D2C希望通過努力,整合各方資源,給設計師及設計師品牌提供良好的...
2月27日螞蟻莊園小課堂正確答案?2021螞蟻莊園小教學2月27日答案:問題:防藍光眼鏡一般需要定期更換屏幕,那遮陽傘呢?正確答案:也需要定期更換小鎮小課程玩法介紹:1、打開相機中的手機銀行,進入到pos機首頁后找到【更多】選項并點擊。2、點擊后會打開銀行卡的全部應用界面,在【教育公益】類別的下方找到并點擊【螞蟻莊園】。3、接下來會打開螞蟻莊園,在里面找到左下方位置的【領食品】功能并點擊。4、點擊...
u盤多大容量合適性價比高?答:u盤16GB容量合適性價比高。1. 選擇容量目前,有8G,16G,32G,64G和128G的U盤數量很多,足以使用。較大的一個是直接使用移動硬盤。但是,相同質量的U盤容量越大,價格越高。2. 選擇速度隨著USB3.0技術的成熟,您可以體驗高速存儲的便利。建議直接USB 3.0端口為藍色。當前,大多數計算機都具有3.0接口,因此可以放心購買。用3.0的u盤玩游戲可以嗎需...