imclearborder
영상 테두리에 연결된 밝은 구조물의 표시를 제거함
설명
는 하나 이상의 이름-값 인수를 사용하여 테두리 구조물을 선택하는 옵션을 지정합니다. 예를 들어 J
= imclearborder(___,Name=Value
)imclearborder(I,Borders=["left" "right"])
는 영상의 왼쪽 또는 오른쪽 테두리에 닿는 구조물만 제거합니다.
예제
영상 테두리에 연결된 객체 제거하기
이진 영상(미세 석영 주상 결정립의 후처리된 영상[2])을 작업 공간으로 읽어 들인 후 이를 표시합니다.
originalBW = imread("quartz_columns.png");
imshow(originalBW)
영상 속에서 영상 테두리에 연결된 밝은 객체를 모두 지운 후 조정된 영상을 표시합니다.
BWclearB = imclearborder(originalBW); imshow(BWclearB)
영상에서 어두운 테두리 제거하기
어두운 테두리가 있는 객체를 포함하는 회색조 영상을 작업 공간으로 읽어 들인 후 이를 표시합니다.
I = imread("logo.png");
imshow(I)
영상의 색을 반전하고 테두리를 제거합니다. 영상을 표시합니다.
J = imcomplement(I); JNoBorder = imclearborder(J); imshow(JNoBorder)
영상의 색을 다시 반전하여 원래의 입력 영상 대비로 되돌립니다.
INoBorder = imcomplement(JNoBorder); imshow(INoBorder)
선택한 영상 테두리에 연결된 객체 제거하기
이진 영상(미세 석영 주상 결정립의 후처리된 영상[2])을 작업 공간으로 읽어 들인 후 이를 표시합니다.
originalBW = imread("quartz_columns.png");
imshow(originalBW)
영상의 위쪽 또는 아래쪽 테두리에 연결된 객체만 제거합니다.
BWclear2B = imclearborder(originalBW, Borders=["top" "bottom"]); imshow(BWclear2B)
연결성이 테두리 지우기에 미치는 영향
단순한 이진 영상을 만듭니다.
BW = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
4-연결성을 사용하여 영상 테두리의 픽셀을 지웁니다. imclearborder
는 (5,2)의 픽셀을 지우지 않습니다. 4-연결성에서는 (4,1)의 테두리 픽셀에 연결된 것으로 간주되지 않기 때문입니다.
BWc1 = imclearborder(BW,Connectivity=4)
BWc1 = 9×9
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 1 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
이제 8-연결성을 사용하여 영상 테두리의 픽셀을 지웁니다. imclearborder
는 (5,2)의 픽셀을 지웁니다. 8-연결성에서는 테두리 픽셀 (4,1)에 연결된 것으로 간주되기 때문입니다.
BWc2 = imclearborder(BW,Connectivity=8)
BWc2 = 9×9
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
입력 인수
I
— 회색조 또는 이진 영상
숫자형 배열 | 논리형 배열
회색조 또는 이진 영상으로, 숫자형 배열 또는 논리형 배열로 지정됩니다.
예: I = imread('pout.tif');
데이터형: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
conn
— 픽셀 연결성
4
| 8
| 6
| 18
| 26
| 0
과 1
로 구성된 3×3×...×3 행렬
픽셀 연결성으로, 다음 표에 있는 값 중 하나로 지정되거나 0
과 1
로 구성된 3×3×...×3 행렬로 지정됩니다. 디폴트 연결성은 2차원 영상의 경우 8
, 3차원 영상의 경우 26
입니다.
값 | 의미 | |
---|---|---|
2차원 연결성 | ||
| 경계가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 가로 또는 세로 방향으로 인접한 픽셀입니다. |
현재 픽셀은 회색으로 표시됩니다. |
| 경계 또는 코너가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 가로, 세로 또는 대각선 방향으로 인접한 픽셀입니다. |
현재 픽셀은 회색으로 표시됩니다. |
3차원 연결성 | ||
| 면이 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 다음 방향으로 인접한 픽셀입니다.
|
현재 픽셀은 회색으로 표시됩니다. |
| 면 또는 경계가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 다음 방향으로 인접한 픽셀입니다.
|
현재 픽셀은 큐브의 중앙입니다. |
| 면, 경계 또는 코너가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 다음 방향으로 인접한 픽셀입니다.
|
현재 픽셀은 큐브의 중앙입니다. |
더 높은 차원의 경우, imclearborder
는 디폴트 값
을 사용합니다.conndef
(ndims(I),'maximal')
0
과 1
로 구성된 3×3×...×3 행렬을 지정하여 모든 차원에 대해 더 일반적인 방식으로 연결성을 정의할 수도 있습니다. 값이 1
인 요소는 conn
의 중앙 요소를 기준으로 하여 이웃 픽셀의 위치를 정의합니다. conn
은 그 중앙 요소를 기준으로 대칭이어야 합니다. 자세한 내용은 Specifying Custom Connectivities 항목을 참조하십시오.
참고
디폴트가 아닌 연결성을 지정할 경우 입력 영상의 경계에 있는 픽셀이 테두리 픽셀로 간주되지 않을 수 있습니다. 예를 들어, conn = [0 0 0; 1 1 1; 0 0 0]
이면 이 연결성 정의에 따라 첫 번째 행과 마지막 행의 요소들은 영상 범위를 벗어난 영역과 연결되지 않기 때문에 테두리 픽셀로 간주되지 않습니다.
참고
conn
인수와 Connectivity
이름-값 인수를 모두 지정하는 경우 imclearborder
는 Connectivity
에 따라 연결성을 설정하고 conn
의 값을 무시합니다.
데이터형: double
| logical
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
예: imclearborder(I,Borders=["left" "right"])
는 영상의 왼쪽 또는 오른쪽 테두리에 닿는 밝은 구조물을 제거합니다.
Borders
— 구조물을 제거할 영상 테두리
string형으로 구성된 벡터 | 0
과 1
로 구성된 N×2 행렬
R2023b 이후
구조물을 제거할 영상 테두리로, string형으로 구성된 벡터 또는 0
과 1
로 구성된 N×2 행렬로 지정됩니다.
string형으로 구성된 벡터 —
"left"
,"right"
,"top"
,"bottom"
의 조합을 사용하여 2차원 영상의 어느 테두리에서 구조물을 제거할지 지정합니다.I
를 2차원 영상으로 지정하면Borders
의 디폴트 값은["left" "right" "top" "bottom"]
입니다.0
과1
로 구성된 N×2 행렬 — N차원 영상의 어느 테두리에서 구조물을 제거할지 지정합니다. 여기서 각 행의 첫 번째 요소는 해당 차원의 첫 번째 테두리를 나타내고 두 번째 요소는 해당 차원의 두 번째 테두리를 나타냅니다. 예를 들어Borders(k,1)
이1
이면 k번째 차원의 첫 번째 테두리에 닿는 구조물이 선택됩니다.Borders(k,2)
가1
이면 k번째 차원의 두 번째 테두리에 닿는 구조물이 선택됩니다. 예를 들어Borders = [0 0; 1 1; 0 0]
을 지정하는 것은Borders = ["left" "right"]
를 지정하는 것과 동일합니다. N차원 영상에 대한Borders
의 디폴트 값은ones(ndims(I),2)
이며, 이는 영상의 모든 테두리에 닿는 구조물을 제거하도록 지정합니다.
Connectivity
— 픽셀 연결성
4
| 8
| 6
| 18
| 26
| 0
과 1
로 구성된 3×3×...×3 행렬
R2023b 이후
픽셀 연결성으로, 4
, 8
, 6
, 18
, 26
또는 0
과 1
로 구성된 3×3×...×3 행렬로 지정됩니다. 자세한 내용은 conn
항목을 참조하십시오.
데이터형: double
| logical
출력 인수
J
— 처리된 영상
숫자형 배열 | 논리형 배열
처리된 회색조 또는 이진 영상으로, 지정한 입력 영상에 따라 숫자형 배열 또는 논리형 배열로 반환됩니다.
알고리즘
imclearborder
는 다음과 같은 경우 모폴로지 재구성을 사용합니다.
마스크 영상이 입력 영상인 경우.
마커 영상이 테두리 부분을 제외한 모든 곳에서 0이고 테두리 부분이 마스크 영상과 동일한 경우.
참고 문헌
[1] Soille, Pierre. Morphological Image Analysis: Principles and Applications Berlin ; New York: Springer, 1999, 164–165.
[2] Molnar, Ian. Uniform quartz - Silver nanoparticle injection experiment, Digital Rocks Portal (April 2016). Accessed March 10, 2023. https://www.digitalrocksportal.org/projects/44, made available for documentation use under the ODC-BY 1.0 Attribution License.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
imclearborder
함수는 C 코드 생성을 지원합니다(MATLAB® Coder™가 필요함). 일반적인MATLAB Host Computer
타깃 플랫폼을 선택할 경우imclearborder
함수는 미리 컴파일된 플랫폼별 공유 라이브러리를 사용하는 코드를 생성합니다. 공유 라이브러리를 사용하면 성능 최적화가 유지되지만 코드를 생성할 수 있는 타깃 플랫폼이 제한됩니다. 자세한 내용은 Types of Code Generation Support in Image Processing Toolbox 항목을 참조하십시오.최대 3차원 입력값만 지원합니다.
이름-값 인수
Connectivity
는 컴파일타임 상수여야 합니다.Borders
값이 숫자형 행렬 형식이 아니라면 셀형 배열로 지정해야 합니다.
버전 내역
R2006a 이전에 개발됨R2023b: 향상된 성능
imclearborder
함수의 성능이 향상되었습니다. 예를 들어 아래 코드 시간 측정을 보면 imclearborder
호출이 이전 릴리스보다 약 1.7배 더 빠릅니다.
function t = imclearborderTimingTest A = imbinarize(imread("rice.png")); f = @() imclearborder(A); t = timeit(f); end
대략적인 실행 시간은 다음과 같습니다.
R2023a: 0.85ms
R2023b: 0.51ms
이 코드는 macOS 12.5.1, Intel® Core i9 CPU @ 3.6GHz 테스트 시스템에서 시간이 측정되었습니다.
R2023b: 구조물을 제거할 테두리를 지정하는 옵션
Borders
이름 값 인수를 사용하여 어느 테두리에 연결된 구조물을 제거할지 지정합니다. 예를 들어 imclearborder(I,Borders=["left" "right"])
는 왼쪽 또는 오른쪽 영상 테두리에만 닿는 밝은 구조물을 제거합니다.
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)