컴퓨터사이언스 51

인라인 함수 (C++)

인라인 함수는 호출될 때 일반적인 함수의 호출 과정(컴파일 타임에 함수 호출 부분으로 가서)을 거치지 않고, 함수의 모든 코드를 호출된 자리에 바로 삽입하는 방식의 함수. 시간은 절약되나, 함수 호출 과정으로 생기는 여러 이점을 포기하게 된다. 따라서 코드가 매우 적은 함수만을 인라인 함수로 선언하는 것이 좋다. - 인라인 함수를 사용하려면 함수 선언 앞에 inline이라는 키워드를 붙이거나, 함수 정의 앞에 inline이라는 키워드를 붙인다. - 클래스 멤버 함수가 inline을 사용하려면, 함수 정의의 위치가 *.h에 있어야 한다. 안 그러면 확인할 수 없는 외부 참조라고 뜬다. - 프로그래머가 inline 선언을 해도 컴파일러가 인라인화를 거부할 수 있다. - 프로그래머가 inline 선언을 안 해..

범위 연산자 :: (C++)

1. 지역변수와 같은 이름의 전역변수에 접근할 때 사용 2. 클래스 밖에서 함수 정의할 때 사용 3. 클래스의 정적 변수(static variable) 접근할 때 사용 4. 다중 상속의 경우, 두 조상 클래스에 같은 이름의 변수가 있는 경우 사용 5. 두 개의 네임스페이스 내에 같은 이름의 클래스가 있을 때 사용 6. 어떤 클래스 내부의 존재하는 클래스 참조할 때 사용

this 포인터

C++에서는 모든 멤버 함수가 자신만의 this 포인터를 가지고 있다. this 포인터는 해당 멤버 함수를 호출한 객체를 가리키게 되며, 호출된 멤버 함수의 숨은 인수로 전달된다. 이렇게 하면 호출된 멤버 함수는 자신을 호출한 객체가 무엇인지 정확히 파악할 수 있다. 1. 멤버변수와 매개변수가 이름이 같을 때 this->변수명으로 멤버변수임을 나타낼 때 2. 객체 자신의 주소를 반환할 때 static(정적인) 멤버 함수에서는 사용이 불가능하고, 클래스, 구조체 내의 비정적인 멤버 함수에서 사용 가능 this 포인터는 언제나 포인터 상수이며, 따라서 값을 재할당할 수 없다. 현재 객체의 주소를 다른 함수나 객체로 넘기고 싶을 때 this 포인터를 사용하면 된다.

기본적인 이미지 밝기 변환(Intensity Transformation)

𝑠 = 𝑇[𝑟] r: 원래 이미지의 하나의 픽셀값 T: 밝기 변환 함수 s: 변환된 이미지 L-1: 밝기 최대값 1) Image Negatives 𝑠 = (𝐿 − 1) − r 밝은 영역을 어둡게, 어두운 영역을 밝게 보기 위할 때 적용 2) Log Transformations 𝑠 = 𝑐 log(1 + 𝑟) c는 밝기 최대값을 조절하기 위한 계수, 보통 밝기 최대값 L-1에 맞춰 설정한다. log는 위로 볼록한 곡선으로, 이미지의 전체적인 밝기을 높여주고 역함수인 지수함수 형태는 아래로 볼록한 곡선으로, 이미지의 전체적인 밝기를 낮춰준다고 생각하면 좋다. 3) Power-Law (Gamma) Transformations 𝑠 = 𝑐 (𝑟^γ) 기존 이미지에 감마를 제곱해주는 기능. γ > 1이면 어두워지고,..

샘플링 이론(Sampling theorem)

연속적인 아날로그 신호(x(t))를 이산적인 디지털 신호(x[n])로 변환하는 것을 샘플링이라 한다. 샘플링 간격 T_s마다 샘플링하며, 이때 샘플링 주파수(Sampling frequence) f_s는 1/T_s이다. (역수 관계) 원래 아날로그 신호의 최대 주파수를 대역폭 (bandwidth)이라 하며 f_max라 표기한다. T_s가 작아야(샘플링 촘촘하게 할수록) 원래 신호의 정보를 더욱 많이 담아서 변환할 수 있는데, 샘플링 정리란 적어도 f_s > 2 * f_max로 설정해야 기존 신호가 보존된다는 것이다. 완전히 절대적인 공식은 아니다. 노이즈 제거 등의 신호 전처리 과정이 필요한 상황도 있고.. 2 * f_max는 Nyquist rate이라고 한다. 디지털 영상 이미지에서 샘플링에도 샘플링 이..

뇌 MRI에서 Skull Stripping 사례 링크

https://www.phddirection.com/skull-stripping-using-python/ Processing Steps for Skull Stripping using Python (Top 10 Latest Algorithm)Which python IDE is best for Skull Stripping? How to implement Skull Stripping using python programming? Research Topics in Skull Stripping.www.phddirection.com위 링크 내용 정리한 포스팅입니다. 뇌 MRI 데이터를 활용한 이상치 탐색 또는 분류 작업을 수행하기 위해선 전처리가 필수적인데, 뇌조직이 아닌 두개골을 제거한다면 보다 높은 정확도를 기..

Spatial Domain Filtering

Filter kernel w -> window, mask, template라고도 불리울 수 있다. 아래처럼 생겼고, (2a+1) x (2b+1) 사이즈를 가진다. (예시 그림은 3 x 3이므로 a와 b는 모두 1) input 이미지에 필터를 컨볼루전(혹은 correlation)하면 아래 공식을 거친 것과 같은 출력값 g(x, y)를 얻는다. 단, 가장자리 픽셀은 패딩 또는 어떤 처리가 필요하다. 벡터 공간에서 연산으로 생각하면 수식이 아래처럼 보다 간단해진다. - Low pass Spatial Filter 1. Box Filter 필터를 통해 이미지에 다양한 효과를 줄 수 있는데, 우선 흐리게(blur) 처리하는 low pass 필터에 대해 알아본다. 가장 간단한 형태의 Low pass filter인 B..

선형 시불변 시스템 (Linear Time-Invariant, LTI) 이해하기

Spatial Filtering의 바탕 지식이 될 LTI에 대해 공부해보기로 한다. 공돌이의 수학 정리노트를 약간 참고하였다. https://angeloyeo.github.io/2022/01/03/signal_processing_introduction.html 신호 처리 서론 - 공돌이의 수학정리노트 angeloyeo.github.io 신호는 정보를 표현하기 위한 변화의 패턴이라고 정의할 수 있다. (여기서 패턴은 함수와 비슷한 의미) 여기서 변화라는 것은 시간 상의 변화 혹은 공간 상의 변화를 모두 포함하고 있는 말이다. 2차원 이미지 데이터는 공간 상의 신호라고 볼 수 있으려나. LTI 시스템 정의 1. Linear System 정의 - 아래 두 개 만족하면 Linear Scaling (homogen..

Brain Tumor Segmentation (BraTS) Challenge 데이터셋 이용하기 전에

http://braintumorsegmentation.org/2021년도 기준 홈페이지다. 10주년 넘긴 뇌종양 Segmentation 대회인데, 대회가 끝나도 트레이닝셋과 검증셋을 무료로 이용할 수 있기 때문에 알아보고 있다. 대회 참가 목적이 아니라 데이터셋만 이용할 계획이다. (이용 안하기로 했다.) 대회 개요여러 기관으로부터 수집된 수술 전 기준 다중 파라미터 자기공명영상(mpMRI) 을 사용하고, 2개의 과제가 주어지는데, 둘 중 하나만 하거나 둘 다 해도 된다. 데이터셋은 독립된 걸 사용하는 듯. 1. 이질성 신경교종 하위 영역의 분할(segmentation)에 대한 state-of-the-art 방법의 평가에 초점을 맞춘다. 2. MGMT 프로모터 메틸화 상태를 예측하기 위한 분류 방법의 평..