바이너리 마스크 옵션


바이너리.
다른 바이너리 명령은 무엇을합니까?
이 하위 메뉴에는 이진 (흑백) 이미지를 처리하는 명령이 들어 있습니다. 이 명령은 기본적으로 개체가 검은 색이고 배경이 흰색 인 것으로 가정합니다. 기본 설정을 검은 색 바탕 및 흰색 개체로 설정하는 방법에 대한이 FAQ를 참조하십시오.
바이너리 화.
이미지를 흑백 이미지로 변환합니다. 임계 값 레벨은 현재 선택 영역의 히스토그램을 분석하거나 선택 영역이 없을 경우 전체 이미지의 히스토그램을 분석하여 결정됩니다. 사용 된 알고리즘을 설명하는 FAQ를보십시오.
이미지 & gt; 조정 & gt; 임계 값 도구가 활성화 된 경우 배경색과 전경색 및 배경이 검정색이고 전경색이 흰색인지 여부를 지정하는 대화 상자가 나타납니다.
[위의 내용을 업데이트하십시오.]
스택을 사용하면 스택에있는 모든 이미지가 현재 표시된 슬라이스의 계산 된 임계 값을 사용하여 바이너리로 변환됩니다. ConvertStackToBinary 매크로를 사용하여 로컬로 계산 된 임계 값을 사용하여 스택을 이진으로 변환합니다.
마스크로 변환하십시오.
현재 임계 값 설정을 기반으로 이미지를 흑백 이미지로 변환합니다. The Fault를 사용하면 마스크는 반전 LUT (검정색은 255이고 흰색은 0)이지만 Process & gt; Binary & gt; Options 대화 상자에서 검정색 배경을 선택하면 검은 색 배경 (0) 마스크가 생성됩니다.
[업데이트하십시오, 위의 완전히 정확하지 않을 수 있습니다]
맥시멈 찾기.
이미지에서 로컬 맥시마를 결정하고 최대 크기 또는 최대로 분할 된 하나의 입자로 표시된 동일한 크기의 이진 (마스크와 같은) 이미지를 만듭니다. RGB 이미지의 경우, 휘도의 최대 값이 선택되고, 휘도는 [편집] & gt; 옵션 & gt; 전환 설정에 따라 색상의 가중치 또는 비가 중 평균으로 정의됩니다. 이 명령은 Michael Schmid가 제공 한 플러그인을 기반으로합니다.
다음 옵션이있는 대화 상자가 표시됩니다.
Noise Tolerance - Maxima는이 값 (보정 된 이미지의 보정 된 단위) 이상으로 주변에서 눈에 띄지 않는 경우 무시됩니다. 즉, 임계 값은 최대 값에서 잡음 허용치를 뺀 값으로 설정되고 임계 값을 초과하는 최대 값 주변의 연속 영역이 분석됩니다. 최대 값을 허용하려면이 영역에 최대 값보다 큰 값이있는 점이 없어야합니다. 이 영역 내의 하나의 최대 값만 허용됩니다.
Maxima Within Tolerance - 각 최대 값에 대해 "Noise Tolerance"내의 모든 포인트로 출력 이미지를 만듭니다.
Segmented Particles - 각 최대 값이 입자에 속하고 이미지의 값에 적용된 유역 알고리즘으로 이미지를 분할한다고 가정합니다 (유 클리디언 거리 맵을 사용하는 프로세스 & gt; Binary & gt; Watershed와는 달리).
Point Selection (점 선택) - 각 점에 점이있는 다중 점 선택을 표시합니다. 별도의 출력 이미지를 생성하지 않습니다.
Count - 결과 창에 최대 값 수를 표시합니다. 출력 이미지를 생성하지 않습니다.
가장자리 최대 값 제외 - 최대 주변의 노이즈 허용 범위 내의 영역이 이미지 가장자리에 닿는 경우 최대 값을 제외합니다 (선택 가장자리는 중요하지 않음).
밝은 배경 - 밝은 배경과 어두운 물체가있는 이미지를 처리 ​​할 수 ​​있습니다.
Above Lower Threshold - (이 옵션은 임계 값 이미지에만 나타납니다) 낮은 임계 값보다 큰 값을 찾습니다. 이미지의 상위 임계 값은 무시됩니다. Segmented Particles가 Output Type으로 선택되면, 낮은 임계 값 아래의 영역은 배경으로 간주됩니다. 이 옵션은 수학적 의미에서 픽셀 값의 최대 값, 즉 어두운 배경 및 비 반전 LUT 또는 밝은 배경과 반전 LUT를 찾을 때만 작동합니다.
Preview Point Selection (미리보기 포인트 선택) - 현재 매개 변수가 이미지 위에 겹쳐있는 다중 점 선택 항목으로 최대 값을 표시합니다. 이 옵션을 선택하면 발견 된 최대 값 수가 대화 상자에도 표시됩니다.
단일 출력 유형, 최대 허용 오차 및 분할 입자의 경우 출력은 프로세스> 이진> 옵션의 검정색 배경 옵션에 따라 뒤집힌 또는 보통 LUT를 사용하여 전경 255 및 배경 0 인 이진 이미지입니다. 출력 이미지의 입자 분석 (입자 분석으로 얻음)은 선택된 출력 유형에 의존하지 않습니다. Edge Maxima 제외가 선택되면 분할 된 입자로 인해 입자가 가장자리에 닿아 야합니다. Exclude Edge Maxima는 입자가 아닌 최대 값에 적용됩니다.
다른 옵션을 가진 잡음이 많은 이미지에 적용된 Maxima를 찾으십시오 (선택한 Edge Maxima 제외).
Maxima가 스택에서는 작동하지 않지만 FindStackMaxima 매크로는 스택의 모든 이미지에서 Maxima를 실행하고 출력 이미지가 포함 된 두 번째 스택을 만듭니다.
3/3 이웃의 각 픽셀을 최소 (가장 밝은) 값으로 바꿉니다. 이진 이미지를 사용하면 검정색 객체의 가장자리에서 픽셀을 제거합니다.
3/3 이웃의 각 픽셀을 최대 (가장 어두운) 값으로 바꿉니다. 이진 이미지를 사용하면 검정색 오브젝트의 가장자리에 픽셀을 추가합니다.
침식 조작을 수행 한 후 확장합니다. 이진 이미지를 사용하면 객체가 부드럽게 처리되고 격리 된 픽셀이 제거됩니다.
확장 수술을 수행 한 다음 침식합니다. 이진 이미지를 사용하면 객체가 부드럽게되고 작은 구멍이 채워집니다. 이 명령에는 "파일 닫기"와 구별 할 수있는 꼬리말 하이픈이 있습니다.
이진 하위 메뉴의 명령에 사용되는 여러 설정을 변경할 수있는 대화 상자를 표시합니다.
반복은 침식, 팽창, 열림 및 닫힘이 수행 된 횟수를 지정합니다.
Count는 침식 중에 객체의 가장자리에서 픽셀을 제거하기 전에 필요한 인접한 배경 픽셀의 수와 픽셀을 확장하는 동안 객체의 가장자리에 픽셀을 추가하기 전에 필요한 인접한 전경 픽셀 수를 지정합니다.
이미지에 검정색 배경에 흰색 물체가있는 경우 검정색 배경을 선택하십시오.
부식 될 때 패드 모서리가 선택되면 프로세스 & gt; 바이너리 & gt; Erode가 이미지의 가장자리에서 부식되지 않습니다. 이 설정은 프로세스 & gt; 2 진 & gt; 닫기에도 영향을 미치며이 확인란을 선택하지 않으면 가장자리에서 삭제됩니다.
EDM 출력은 Process> Binary> Distance Map, Ultimate Points 및 Voronoi 명령의 출력 유형을 결정합니다. 입력 이미지를 덮어 쓰는 8 비트 출력을 덮어 쓰도록 설정하십시오. 개별 출력 이미지의 경우 8 비트, 16 비트 또는 32 비트. 32 비트 출력에는 부동 소수점 (서브 픽셀) 거리 분해능이 있습니다.
이진 이미지에서 전경 (검정색) 객체의 1 픽셀 너비 외곽선을 생성합니다. 선은 물체 내부, 즉 이전 전경 픽셀에 그려집니다.
골격화.
이진 이미지가 단일 픽셀 너비의 골격으로 축소 될 때까지 객체의 가장자리에서 픽셀을 반복적으로 제거합니다. 오브젝트는 검은 색이고 배경은 흰색 인 것으로 가정합니다. 많은 골격화 알고리즘이 존재합니다.
거리지도.
유클리드 거리 맵 (EDM)을 생성합니다. 이진 이미지의 각 전경 픽셀은 가장 가까운 배경 픽셀과의 픽셀 거리와 동일한 회색 값으로 대체됩니다. 처리 & gt; 2 진 & gt; 옵션을 사용하여 배경색 (검정 또는 흰색)과 출력 유형을 설정합니다. 덮어 쓰기 또는 8 비트 출력을 선택할 때 255보다 큰 거리는 255로 표시됩니다.
궁극적 인 포인트.
EDM의 궁극적 인 침식 점 (UEP)을 생성합니다. 바이너리 이미지를 입력으로 요구합니다. UEP는 세분화로 구분되는 입자의 중심을 나타냅니다. UEP의 회색 값은 해당 입자의 내접원 반경과 같습니다. 처리 & gt; 2 진 & gt; 옵션을 사용하여 배경색 (검정 또는 흰색)과 출력 유형을 설정합니다.
Euclidian 거리 맵 (EDM)의 유역 분할은 터치하는 입자를 자동으로 분리 또는 절단하는 방법입니다 (그레이 스케일 이미지의 유역 분리는 Find Maxima. 명령을 통해 사용할 수 있음). 유역 명령에는 흰색 배경에 검은 색 입자가 포함 된 이진 이미지가 필요합니다. 먼저 유클리드 거리 맵을 계산하고 궁극적 인 침식 된 점 (UEP)을 찾습니다. 그런 다음 가능한 한 입자의 가장자리에 도달 할 때까지 또는 다른 (성장하는) UEP 영역의 가장자리까지 각 UEP (EDM의 피크 또는 최대 점)를 확장합니다. 유역 분할은 부드러운 볼록 물체가 너무 많이 겹치지 않을 때 가장 효과적입니다.
유역 분할이 어떻게 작동하는지 보여주는 애니메이션입니다.
가장 가까운 두 입자의 경계까지 동일한 거리를 갖는 점의 선으로 이미지를 분할합니다. 따라서 각 입자의 보로 노이 셀은 다른 입자보다이 입자에 가까운 모든 점을 포함합니다. 파티클이 단일 포인트 인 경우, 보로 노이 모자이크 (Dirichlet 모자이크라고도 함)입니다.
출력에서 Voronoi 셀의 값은 0입니다. 셀들 사이의 분할 선의 픽셀 값은 2 개의 가장 가까운 입자까지의 거리와 동일하다. 이것은 배경의 중간 축 변환과 비슷하지만 입자 내부 구멍에는 선이 없습니다. 프로세스> 이진> 옵션 대화 상자에서 출력 유형 ( "덮어 쓰기", "8 비트", "16 비트"또는 "32 비트") 및 배경색 (검정색 또는 흰색, 입력 및 출력 모두에 적용됨)을 선택하십시오. 상자.

바이너리 마스크 옵션
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
C #에서 비트 마스크 사용하기
내가 다음을 가지고 있다고 가정 해 봅시다.
메소드에 매개 변수로 10 (8 + 2)을 전달하고 이것을 수잔과 카렌을 의미하도록 디코드하려고합니다.
나는 10이 1010이라는 것을 안다.
하지만 특정 비트가있는 것으로 확인되는지 확인하려면 어떻게해야합니까?
지금 내가 생각할 수있는 것은 내가 통과 한 번호가 있는지 여부를 확인하는 것입니다.
현실 세계에서 실제 비트 수가 더 많을 때 실용적이지 않은 것처럼 보입니다. 마스크를 사용하여 단지 카렌에 대한 조건을 충족하는지 여부를 확인하는 더 나은 방법은 무엇입니까?
왼쪽으로 이동 한 다음 다시 오른쪽으로 이동하여 내가 관심있는 비트가 아닌 다른 비트로 이동하는 것을 생각할 수도 있지만 너무 복잡합니다.
이를 수행하는 전통적인 방법은 enum에 Flags 속성을 사용하는 것입니다.
다음과 같이 특정 이름을 확인합니다.
논리 비트 조합은 기억하기 힘들 수 있으므로 FlagsHelper 클래스 *를 사용하여 스스로를 더 편하게 만듭니다.
이렇게하면 위 코드를 다음과 같이 다시 작성할 수 있습니다.
참고 다음과 같이 카렌을 세트에 추가 할 수도 있습니다.
비슷한 방법으로 수잔을 제거 할 수 있습니다.
* Porges가 지적한 것처럼 위의 IsSet 메서드와 동일한 기능이 이미 4.0 : Enum. HasFlag에 있습니다. 그러나 Set 및 Unset 메서드에는 동일한 기능이없는 것처럼 보입니다. 그래서 나는 아직도이 수업에는 장점이 있다고 말하고 싶습니다.
참고 : 열거 형을 사용하는 것은이 문제를 다루기위한 일반적인 방법 일뿐입니다. 위의 코드를 모두 int로 대신 번역하면 완전히 잘 작동합니다.
bitwise 'and'는 "Karen"을 나타내는 비트를 제외한 모든 것을 가려냅니다. 각 사람이 단일 비트 위치로 표현되는 한 간단한 방법으로 여러 사람을 확인할 수 있습니다.
여기 예제를 포함하여 데이터베이스 열에 마스크를 int로 저장하는 방법과 나중에 마스크를 복원하는 방법을 보여줍니다.
비트 - 또는 - 를 사용할 비트 마스크를 결합하려면. 당신이 결합하는 모든 가치가 정확히 1 비트 씩 (당신의 예처럼)있는 사소한 경우에는 그것들을 추가하는 것과 같습니다. 그러나 비트가 겹치는 경우 또는 그들을 처리하면 정상적으로 케이스를 처리합니다.
비트 마스크를 디코드하려면 다음과 같이 마스크를 사용하여 사용자와 사용자의 값을 디코딩하십시오.
비트 마스크 대 개별 bool을 사용하는 또 다른 이유는 웹 개발자로서 하나의 웹 사이트를 다른 웹 사이트에 통합 할 때 종종 쿼리 문자열에 매개 변수 나 플래그를 전송해야하기 때문입니다. 모든 플래그가 바이너리 인 한, 여러 값을 bool로 보내는 것보다 비트 마스크로 단일 값을 사용하는 것이 훨씬 간단합니다. 나는 데이터 (GET, POST 등)를 보낼 다른 방법이 있다는 것을 알고 있지만 쿼리 문자열의 간단한 매개 변수는 대부분 비 구분 항목에 충분한 시간입니다. 쿼리 문자열에 128 개의 bool 값을 보내 외부 사이트와 통신하십시오. 이것은 또한 브라우저에서 url querystring의 한계를 넘지 않는 추가 된 기능을 제공합니다.

바이너리 마스크 옵션
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
SQL Server : varbinary 또는 비트 마스크를 저장하는 int?
성능이나 유연성 측면에서 비트 마스크를 저장하기 위해 int vs varbinary를 사용하면 어떤 이점이 있습니까?
내 목적을 위해, 나는 항상 비트 마스크 (쓰기 또는 업데이트 없음)에 대한 읽기 작업을 수행 할 것입니다.
INT (32 플래그가 필요한 경우) 또는 BIGINT (64 플래그)를 사용해야합니다. 더 많은 플래그가 필요한 경우 이진 (BINARY)을 사용할 수 있습니다 (하지만 응용 프로그램에 너무 많은 플래그가 필요한 이유를 직접 물어봐야 할 것입니다).
게다가 정수형을 사용하는 경우에는 바이트 배열을 정수형으로 변환하지 않고 표준 비트 연산자를 직접 사용할 수 있습니다.
더 많은 플래그가 필요하고 BINARY를 사용해야하는 경우 비트 연산자에 대한 기본 지원을 잃어 버리므로 플래그 값을 쉽게 지원할 수 있습니다. 아마도 플래그 값을 클라이언트 응용 프로그램으로 이동 하겠지만 T-SQL에서 프로그래밍하는 것이 편한 선택 인 경우에도 마찬가지입니다. C #을 사용하는 경우 필요한 작업이 포함 된 BitArray 클래스가 있고 Java에서는 BitSet 클래스가 있습니다.
일반적으로 비트 마스크 대신 비트 열을 사용하는 것이 좋습니다. 그들은 페이지에 함께 포장되어 더 이상 공간을 차지하지 않습니다. 필자는 항상 int 또는 bigint 열을 사용하여 열 이름 입력을 모두 피하는 것 같지만 intellisense를 사용하면 비트 열을 사용하는 것이 좋습니다.
자, int가 저장 공간이 적고 일반적으로 작업하기가 쉽다는 것을 감안할 때 왜 varbinary를 사용해야하는지 잘 모르겠습니다.
나는 hainstech의 비트 필드 사용에 대한 대답에 동의한다. 왜냐하면 각 비트 필드의 이름을 명시 적으로 지정하여 저장할 위치를 지정할 수 있기 때문이다. 그러나 비트 필드와 비트 마스크 비교를 수행하는 실용적인 접근법을 보지 못했습니다. SQL Server의 비트 연산자 (& amp;, 등)를 사용하면 일련의 플래그가 설정되어 있는지 쉽게 알 수 있습니다. 수많은 비트 필드에 대한 평등 연산자를 사용하면 훨씬 더 많은 작업을 수행 할 수 있습니다.

바이너리 마스크 옵션
우리는 VS2005 및 VSS 2005로 전환했으며 현재 몇 가지 문제가 있습니다.
파일 형식 인식.
우리는 아스키 라인 (Defines)을 많이 포함하는 파일 유형을 가지고 있습니다.
CTRL-Z 및 이진 데이터가 있습니다. 인정이 매우 힘들 기 때문에 우리는.
ss. ini의 BINARY_MASKS 옵션을 해당 확장자로 설정하십시오.
VS6에서는 정상적으로 작동하지만 VS2005에서는 옵션을 신경 쓰지 않습니다.
filetype을 ASCII로 설정합니다.
독일에서 감사합니다.
나는 그 행동을 재현 할 수 있으며 VS2005의 버그라고 확신한다.
해당 파일에 대해 자동 검색 인코딩이 허용되는 경우 Checkin / Diff / etc와 같은 작업 중에 Binary_Masks 변수가 무시됩니다. 기본적으로 VSS는 파일의 첫 번째 1kb를 기준으로 envoding을 자동 검색합니다. 파일은 Ansi 파일로 시작되므로 Ansi 파일로 감지되고 데이터베이스에있는 파일 형식은 체크인 후에 변경됩니다. 다음 버그를 열었습니다. lab. msdn. microsoft/ProductFeedback/viewFeedback. aspx? feedbackId=FDBK43418.
해결 방법은 OCDLG 파일의 속성 페이지를 열고 일반 탭에서 "로컬 파일의 인코딩 자동 검색"을 선택 취소하는 것입니다.
모든 답장.
베타 또는 시험판 버전의 VSS2005를 사용하는 경우 Binary_Mask 설정에 문제가있을 수 있습니다. 베타 버전에 버그가 있었고 RTM에서 수정 된 것 같습니다.
아니요, 저는 최신 버전을 사용하고 있다고 생각합니다.
샘플 파일을 보내 주시겠습니까? (alinc AT microsoft DOT com)
휴가가 끝나면 다시 볼 수 있습니다.
네가 보낸 샘플 파일을 봤어. 텍스트 파일로 시작하고, Ctrl-Z 문자와 이진 데이터가 차례로 있습니다. 특이한 것은 없습니다.
OCDLG 확장을 VSS 데이터베이스 (SSExplorer에서 FileTypes 탭의 Tools / Options 대화 상자) 용 바이너리로 설정 한 다음 파일을 데이터베이스에 추가했습니다. 추가하는 동안 AddOptions 대화 상자에 파일 유형이 "자동 감지"로 표시되고 파일이 올바르게 Binary로 추가되었습니다 (설정 한 도구 / 옵션 참조).
SSExplorer는 이진 파일 확장명을 ss. ini 파일에 저장합니다. 여기서 "Binary_Masks = *.doc; *.dll; *.exe; *. ocx; *. OCDLG"
당신이 보낸 srcsafe. ini 파일에서 "Binary_Masks = *.OCDLG, *.OCVIW, *.OCTBS"설정이 있습니다. VSS는 구분 기호로 쉼표와 세미콜론을 허용하고 공백을 무시하므로 잘 작성해야합니다. 내 설정을 너의 것으로 바꿨는데 파일이 바이너리로 올바르게 추가되었다.
srcsafe. ini의 설정을 무시하는 ss. ini 파일의 Binary_Masks 설정이 없는지 확인합니다. 또한 도구 / 옵션 대화 상자를 사용하여 이진 파일 목록에 ODLG 확장을 추가하고 문제를 재현 할 수 있는지 확인하기 위해 새로운 데이터베이스를 만들려고합니다.
또한 디스크의 VSS 바이너리 버전을 확인합니다. 베타 2에서 Binary_Masks에 영향을주는 버그가 있었지만 8.0.50708보다 최근 빌드에서 수정해야합니다.
나는 또 다른 시험을했다.
내가 보낸 파일을 "TEMMEM_Personal_2.OCDLG"에 복사하고 그 파일을 새 것으로 체크인했습니다. 유형은 바이너리입니다 (이제는 Ok ..).
이제 파일에서 ASCII 섹션 (char 삭제)을 변경하고 다시 체크인했는지 확인했습니다. 형식이 이제 "ASCII / MBCS"입니다.
그것을 시도해 보시 겠어요!
나는 그 행동을 재현 할 수 있으며 VS2005의 버그라고 확신한다.
Binary_Masks 변수는 Checkin / Diff / 등의 작업 중에 해당 파일에 대해 자동 검색 인코딩이 허용 될 때 무시됩니다. 기본적으로 VSS는 파일의 첫 번째 1kb를 기준으로 envoding을 자동 검색합니다. 파일은 Ansi 파일로 시작되므로 Ansi 파일로 감지되고 데이터베이스에있는 파일 형식은 체크인 후에 변경됩니다. 다음 버그를 열었습니다. lab. msdn. microsoft/ProductFeedback/viewFeedback. aspx? feedbackId=FDBK43418.
해결 방법은 OCDLG 파일의 속성 페이지를 열고 일반 탭에서 "로컬 파일의 인코딩 자동 검색"을 선택 취소하는 것입니다.
버그를 열어 주셔서 감사합니다!
아마 하나의 추가 메모 : VS6은 그 문제가 없어!
그러나 그것은 재현되지 않았고, 이미 고쳐 졌기 때문에 기각되었다.
Microsoft는 Msdn 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 실시하고 있습니다. 참여를 선택하면 Msdn 웹 사이트를 탈퇴 할 때 온라인 설문 조사가 제공됩니다.

Comments