2월, 2023의 게시물 표시
{{ label!='' ? 'Label : ' : (q!='' ? '검색 : ' : '전체 게시글') }} {{ label }} {{ q }} {{ ('('+(pubs|date:'yyyy-MM')+')') }}

[C++] 스터디 CPPALOM 12주차: Effective C++ Chap 1~2

파워 포인트 파일(.pptx)을 Markdown으로 변환하여 업로드하였음) # <br>CPPALOM # <br>12주차 – Effective C++ Chap 1~2 한수빈 # <br>항목1: C++를 언어들의 연합체로 바라보는 안목은 필수 * C++은 다중패러다임 프로그래밍 언어라고 불린다. * 다음 네 가지 하위 언어를 제공한다: * C * 객체 지향 개념의 C++: 클래스를 쓰는 C * 템플릿 C++: 일반화 프로그래밍 * STL: 템플릿 라이브러리 # <br>항목2: #define을 쓰려거든 const, enum, inline을 떠올리자 * 상수를 사용하기 위해서 #define을 사용하지 마라. 대신: * 주의점: 다음은 컴파일 오류를 일으킨다. * A::C는 선언만 되어있으며, 정의가 되어있지 않다. * 그러나 min()은 참조를 요구하기 때문에 오류가 난다. ```C++ const char* const authorName = “Scott Meyers”; const std::string authorName(“Scott Meyers”); ``` ```C++ #include <algorithm> class A { public: static const int C = 10; // DECLARATION }; // const int A::C; DEFINITION int main() { std::min(0, A::C); } ``` # <br>enum hack * const 객체에 대해 주소를 취하는 것을 방지할 수 있다. * 많은 코드에서 이 기법이 쓰이고 있으므로 이러한 방식에 대해 익혀 놓아야 한다. * 수빈의 첨언: * 현대 C++에서 단순히 상수를 이용하고 싶을 때에는 constexpr를 권장한다! ```C++ class GamePlayer { private: enum { NumTurns = 5};

[프로젝트] C++ CUDA, Fast Fourier Transform을 이용한 이미지 블러

이미지
어떻게 이미지를 흐리게 만들 수 있을까요?   우리는 다양한 이미지 처리 프로그램에서, 주어진 이미지를 흐리게 만들 수 있습니다. 흐리다는 것은 수학적으로 어떻게 정의할 수 있을까요? 아마 가장 쉽고 직관적인 답변으로는 "해상도가 낮음"이 될 수도 있을 것 같습니다. 엄밀히 말해서 우리가 이번에 다룰 이야기와는 조금 거리가 있는 답변이긴 합니다만, 분명 그럴듯하죠. 그렇다면 해상도가 낮다는 것은 왜 흐리다는 것과 비슷한 의미를 지닐 수 있을까요?   현실은 연속적입니다. 우리가 무언가를 본다는 것은, 빛을 받아들인다는 것입니다. 물리 세계의 빛이라는 것에 '화질'이라는 개념이 존재할까요? 우리가 보는 화면에서 글씨의 픽셀은 분명 구분되어 있죠. 27인치 모니터에 희거나, 검거나 하는 것들이 200만여 개로 분리되어 있습니다. 물리적으로도 그럴까요? 물리적으로 픽셀은 단 하나의 무언가는 아닙니다. 그냥 연속적인 빛일 뿐이죠.   즉, 우리는 연속적인 현실의 무언가를 샘플링해서 봅니다. 만약 샘플링된 것이 현실의 무언가를 재현할 수 있을 정도라면, 우리는 '선명하다'고 느끼죠. 하지만 그렇지 않다면, '흐릿하다'고 느낍니다. 예를 들어, 다음 그림은 주기가 빠른 파동을 샘플링하였지만, 샘플링의 주기가 부적절해 마치 다른 파동처럼 보입니다.   즉 우리가 '흐릿하다'고 느끼는 것은, 실제의 디테일을 추측하기 어렵다는 것과 같은 이야기일 것입니다. 반대로, 샘플의 디테일을 일부러 뭉갠다면 그것은 흐릿하게 보이는 요인이 되지 않겠어요? 컨볼루션(Convolution)   컨볼루션은 수학의 한 연산입니다. 우리 전공자들은 인공지능으로 인해서 더욱 익숙하죠. 다만 주의하세요! 인공지능에서 이야기하는 컨볼루션은 사실 신호 처리 분야에서 사용하는 일반적인 컨볼루션 연산과 의미적으로 약간 다릅니다. 반전되지 않는다든가 하는 문제가 있죠. 하지만 그것은 중요치 않으므로 넘어가도록 하겠습니다.   컨볼루션은