프로그래밍/ITK13 Reading, Casting and Writing Images - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다 - Examples/IO/ImageReadCastWrite.cxx - ITK가 일반적인 프로그래밍 패러다임에 기초한다고 주어졌을 때, 타입의 대부분은 컴파일 시간에 정의된다- 이미지의 다른 타입 사이에 변환을 기대하는 것은 때때로 중요하다- 다음 예제는 하나의 픽셀 타입의 이미지를 읽고 그것을 다른 픽셀 타입으로 쓰는 공통적인 경우를 설명한다 - 이 과정은 입력과 출력 픽셀 타입의 다양한 범위는 매우 다를 수 있기 때문에 변환뿐만 아니라 이미지 밝기를 조정을 포함한다- itk::RescaleIntensityImageFilter 는 여기에 이미지 값을 선형으로 재조정하기 위해 여기에 사용된다 - 이 예제에서 첫 번째 단계는 적절한 헤더를 포함하는.. 2016. 7. 2. Reading and Writing RGB Images - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다 - Examples/IO/RGBImageReadWrite.cxx - RGB 이미지는 보통 극저온 부분, 광학 현미경 그리고 내시경으로부터 얻어진 데이터를 나타내는 데 보통 사용된다- 이 예제는 파일로부터 그리고 파일에 RGB 색상 이미지를 읽고 쓰는 방법을 설명한다- 이것은 다음과 같이 헤더를 추가한다 #include "itkRGBPixel.h"#include "itkImage.h"#include "itkImageFileReader.h"#include "itkImageFileWriter.h" - itk::RGBPixel 클래스는 빨강, 녹색 그리고 파랑 요소 중 각각 하나를 나타내기 위해 사용된 타입에 대해 템플릿된다- RGB 이미지 클래스의 .. 2016. 7. 2. Using ImageIO Classes Explicitly - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다 - Examples/IO/ImageReadExportVTK.cxx - 사용자가 무슨 파일 포맷을 사용하는지 알고 이것을 명시적으로 지시하기를 원하는 경우에, 구체적은 itk::ImageIO 클래스는 인스턴스화될 수 있고 이미지 파일 reader 또는 writer에 할당될 수 있다- 이것은 IO 연산을 수행하기 위한 적절한 ImageIO 클래스를 찾는 것을 시도하는 itk::ImageIOFactory 메커니즘을 피한다- ImageIO의 명시적인 선택은 또한 사용자가 ImageIO에 의해 제공되는 일반적인 API로부터 사용할 수 없을 수도 있는 특별한 클래스의 특수화된 특징을 호출할 수 있게 허럭한다 - 다음의 예는 IO 클래스의 명시적인 인스턴스.. 2016. 7. 2. Pluggable Factories - ITK 에서 사용된 입력/출력 메커니즘 뒤의 원리는 장착형 팩토리라고 알려져 있다- 사용자 시점으로부터 파일을 읽고 쓰는 것에 대한 책임이 있는 객체는 itk::ImageFileReader와 itk::ImageFileWriter 클래스 이다- 그러나 이 두 개의 클래스는 PNG 또는 DICOM과 같은 특별한 파일 포맷을 읽거나 또는 쓰면서 포함된 세부 사항을 알지 못한다- 그것들이 하는 것은 이미지 파일 포맷의 세부 사항을 알고 있는 특별한 클래스의 집합에 사용자의 요청을 보내는 것이다- ITK 위임 메커니즘은 사용자가 새로운 클래스를 ImageIO 계층에 단지 추가함으로써 지원되는 파일 포멧의 수를 확장 가능하게 하는 것이다- ImageFileReader와 ImageFileWriter의 각 인스턴스.. 2016. 7. 2. Basic Example - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다 - Examples/IO/ImageReadWrite.cxx - 이미지를 읽고 쓰는 책임을 지는 클래스들은 데이터 처리 파이프 라인의 시작과 끝에 위치한다- 이 클래스들은 데이터 소스 (readers)와 데이터 싱크 (writers)로 알려져 있다- 일반적으로 말해서 그것들은 필터로 언급되지만 reader는 어떤 파이프 라인 입력도 갖지 않고, writer 는 어떤 파이프라인 출력도 갖지 않는다 - 이미지의 읽기는 itk::ImageFileReader 클래스에 의해 관리되는 반면에 쓰기는 itk::ImageFileWriter 클래스에 의해 수행된다- 이 두 개의 클래스들은 어떤 특별한 파일 포맷에 독립적이다- 특별한 파일 포맷을 읽고 쓰는 실제 .. 2016. 7. 2. 연결된 경계치 (Connected Threshold) - 확장 영역에서 픽셀을 포함하는 것에 대한 간단한 기준은 지정된 간격 내부에 밝기 값을 평가하는 것이다 - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다- Examples/Segmentation/ConnectedThresholdImageFilter.cxx - 다음에 나오는 예제는 itk::ConnectedThresholdImageFilter 의 사용을 설명한다- 이 필터는 홍수 채우기 반복자 (flood fill iterator)를 사용한다- 영역 확장 방법의 알고리즘 복잡도의 대부분은 이웃 픽셀을 방문하는 것으로부터 발생한다- 홍수 채우기 반복자는 이 책임성을 가정하고 영역 확장 알고리즘의 구현을 매우 간단하게 한다- 따라서 알고리즘은 특별한 픽셀이 현재의 영역에 포함되는지 아닌지 결졍하는.. 2016. 7. 2. 버퍼로부터 이미지 데이터 가져오기 - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다- Examples/DataRepresentation/Image/Image5.cxx - 이 예제는 itk::Image 클래스에서 데이터를 가져오는 방법을 보여준다- 이것은 특별히 다른 소프트웨어 시스템과 인터페이스 하는데에 유용하다- 많은 시스템은 이미지 픽셀 데이터에 대해 버퍼로 메모리의 인접한 블럭을 사용한다- 현재의 예제는 이 경우라고 가정하고 버퍼를 itk::ImportImageFilter로 제공한다. 그렇게 함으로써 결과물로 이미지를 생성한다 - 재미를 위해 우리는 지역적으로 할당된 버퍼에서 중심에 구를 가진 합성 이미지를 생성하고 메모리의 이 블럭에 ImportImageFilter로 통과한다- 이 예제는 실행을 위해 설정하고, 사용자는.. 2016. 7. 2. 벡터 이미지 - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다- Examples/DataRepresentation/Image/VectorImage.cxx - 많은 이미지 프로세싱 업무는 스칼라 픽셀 타입이 아닌 이미지를 요구한다- 전형적인 예는 벡터의 이미지이다- 이것은 스칼라 이미지의 그레디언트를 나타내기 위해 요구되는 이미지 타입니다- 다음의 코드는 어떻게 인스턴스화 하고 그것의 픽셀이 벡터 타입인 이미지를 사용하는지 설명한다 - 편리함을 위해 픽셀 타입을 정의하기 위해 우리는 itk::Vector 클래스를 사용한다- Vector 클래스는 공간에서 기하적인 벡터를 나타내기 위해 의도되었다- STL에서 std::vector와 같은 배열 컨테이너로 사용되기를 의도한 것이 아니다- 만약 당신이 컨테이너에 관.. 2016. 7. 2. RGB 이미지 - RGB (Red, Green, Blue) 용어는 디지털 이미지에서 공통적으로 사용되는 색상 표현을 상징한다- RGB는 3가지의 스펙트럴 선택 센서를 사용하여 보이는 빛을 분석하기 위해 인간 생리학의 능력의 표현이다- 인간의 망막은 빛에 반응하는 세포의 다른 종류를 가지고 있다 - RGB 공간은 인간의 눈에서 콘의 3개의 타입에 의해 빛에 생리학적 반응의 표현처럼 구성된다- RGB는 벡터 공간이 아니다- 예를 들면, 음수는 색상 공간에서 적절하지 않다. 왜냐하면 인간의 눈에서 음성 반응과 동일하게 될 것이기 때문이다- 비색법의 문맥에서, 음적인 색상은 색상 비교에서 인공적인 구성처럼 사용된다 ColorA = ColorB - ColorC - ColorA와 ColorC를 혼합하여 ColorB를 생산할 수 .. 2016. 7. 2. 원점과 공간 정의 - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다- Examples/DataRepresentation/Image/Image4.cxx - ITK가 일반적인 이미지 처리 일을 수행하는데 사용될 수 있을지라도, 그 툴킷의 주 목적은 의료 이미지 데이터 처리이다- 그런 측면에서, 이미지에 관한 추가적인 정보는 의무적으로 고려된다- 특히 픽셀 사이에 물리적인 공간과 연관된 정보와 어떤 월드 좌표 시스템에 대하여 공간에서 이미지의 위치는 극도로 중요하다 - 이미지 원점과 공간은 많은 응용 프로그램에 근본적이다- 예를 들어, 정합(Registration)은 물리 좌표계에서 수행된다- 적절하지 않게 정의된 공간과 원점은 그런 과정에서 일치하지 않는 결과를 출력한다- 공간 정보가 없는 의료 이미지는 의료 진단.. 2016. 7. 2. 픽셀 데이터 접근 - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다- Examples/DataRepresentation/Image/Image3.cxx - 이 예제는 SetPixel()과 GetPixel() 메서드의 사용 예제를 보여준다- 이 두 개의 메서드는 이미지 안에 포함된 픽셀 데이터의 직접 접근을 제공한다- 이 두 개의 메서드는 상대적으로 느리고 높은 성능 접근을 필요로 하는 상황에서는 사용하지 말아야 하는 것에 주목하라- 이미지 반복자는 효휼적으로 이미지 픽셀 데이터에 접근하기 위한 적절한 메커니즘이다 - 이미지 내부의 픽셀의 개별적인 위치는 유일한 인덱스에 의해 지정된다- 인덱스는 이미지의 각 좌표 차원을 따라 픽셀의 위치를 정의하는 정수들의 배열이다- IndexType은 자동적으로 이미지에 의해 정.. 2016. 7. 2. 파일로부터 이미지 읽기 - 이 부분에 대한 소스 코드는 다음 파일에서 찾을 수 있다- Examples/DataRepresentation/Image/Image2.cxx - 파일로부터 이미지를 읽기 위해 필요한 첫 번째는 itk::ImageFileReader 클래스의 헤더 파일을 포함시키는 것이다 #include "itkImageFileReader.h" - 그리고 나서, 이미지 타입은 이미지의 픽셀과 차원을 나타내기 위해 사용되는 타입을 지정하면서 정의 되어야 한다 typedef unsigned char PixelType;const unsigned int Dimension = 3; typedef itk::Image ImageType; - 이미지 타입을 사용하여, 이미지 읽기 클래스를 인스턴스화 하는 것은 지금 가능하다- 이미지 타.. 2016. 7. 2. 이전 1 2 다음