겹선형 보간법 (Bilinear Interpolation) 겹선형 보간법(Bilinear Interpolation)은 영상 처리에서 가장 보편적으로 사용되는 보간 기법이다. 겹선형 보간법에서 생성되는 픽셀은 네 개의 가장 가까운 픽셀들에 가중치(weight)를 곱한 값들의 합이며, 가중치들은 선형적인 방법으로 결정된다. 각각의 가중치는 각각의 존재하는 픽셀로부터 거리에 반비례한다. 본 Assignment에서는 단순 겹선형 보간법(Simple Bilinear Interpolation)을 이용하여 이미지를 확대하였다. 즉, 주변 픽셀들의 평균값을 계산하여 확대된 영상에서 할당 받지 못한 빈 픽셀에 대입시키는 방법을 사용하였다. 이는 4개의 주어진 값들 사이의 새로운 값을 만들어내는 방법이다. 두 방향의 선형 보간법과 관련되어 있으며 새롭게 생성된 픽셀의 값이 네 개의 가장 가까운 픽셀들에 가중치(2배 확대이므로 가중치는 동일)를 곱한 값이 된다. Bilinear Interpolation은 Nearest Neighbor Interpolation보다 더 매끄러운 영상이 생성된다. 그러나 가운데 Hole 픽셀을 기준으로 했을때 최소 3번의 계산이 필요하므로 Nearest Neighbor Interpolation보다는 상당히 많은 처리 시간(Running Time)이 요구된다.
=====================================================================쉘 소스코드에서 내부 구현된 명령어는 다음과 같다.구현된 명령어는 실제 유닉스 명령어 옵션을 대부분 포함하여 구현하였다.=====================================================================ls - 파일리스트 출력find - 파일 찾기grep - 패턴 찾기set - 지역 환경변수 제어export - 전역 환경변수 제어env - 전역 환경변수 출력echo - 지역 환경변수 확인cd - 디렉토리 변경exit - 셸 종료pwd - 현재 디렉토리 출력alias - name : value 설정unalias - name : value 해제history - 명령어 목록 리스트 출력umask - 모드 형식 출력 및 모드 세팅=====================================================================쉘 소스코드에서 내부 주요 루틴은 다음과 같다.=====================================================================non canonical - 터미널 모드, 비정규 모드, 키보트 인터럽트 처리ipc - pipe 파이프, 리다이렉트 인 redirect in, 리다이렉트 아웃 redirect out프로세스 관련 - fork(), exec() 관련 시스템 콜프로세스 실행 - foreground 포그라운드 실행, background 실행, sequential 실행시그널 처리 - signal 마스크로 블록을 지정하여 모든 시그널 안정적으로 처리=====================================================================기타 쉘 소스코드의 특징은 다음과 같다.=====================================================================ls : 터미널 컬러 출력find : 모든 와일드 카드 처리 가능grep : 이진 바이너리 헥사코드 매칭 처리ailas history : 연결리스트 링크드리스트 구현non canonical : 비정규모드 모든 방향키/홈/엔드/인서트/스페이스/딜리트 키보드 인터럽트처리셸 프롬프트 상태에서 커서 오프셋 출력시그널 인터럽트 / 프로세스 전환 / 파이프 / 리다이렉트 완벽 구현
Floating_Point_Adderinput, output, component 정의각 단계(stage1~stage7)를 순차적으로 실행stage_1 : Compare_Exponent두 수의 지수를 비교 후 부호 비트, 지수 부분, 분수 부분을 결정하는 함수두 입력 값의 지수 부분을 비교한다.지수 부분이 큰 수를 out_1에 저장하고, 지수 부분이 작은 수를 out_2에 저장한다.최상위 1bit는 sign, 23~30bit는 exponent, 0~22bit는 mantissa로 분리한다.stage_2 : Compute_Shift작은 지수가 큰 지수와 같은 값을 갖게 될 때까지 shift해 주는 함수 큰 지수(in_Exp_1)에서 작은 지수(in_Exp_2)를 뺀 결과를 저장(Exp_Sub)한다.두 지수의 차이만큼 오른쪽 시프트를 하기 위해서 Shift 변수에 저장한다.stage_3 : Shift_Man유효숫자 계산할 때 맨 앞자리에 Bit_Man_1을 계산해서 추가한다. 선행하는 1은 유효자리에 숨겨져 있기때문에 0이 아닌 이상에는 Bit_Man_1은 1이 될 것이다.지수가 작았던 수는 stage_2에서 shift를 계산했던 만큼 오른쪽으로 시프트하여 결과 값을 저장 한다.FUNCTION or_reduce(arg : SIGNED) RETURN STD_LOGIC; Result subtype: STD_LOGIC. Result: : Result of or'ing all of the bits of the vector. stage_4 : Compare_Man두 수의 부호비트가 같을 경우와 다를 경우로 나뉜다.두 수의 부호비트가 다를 경우 유효숫자가 큰 수를 out_Man_1에 저장한다.결과 값의 exponent는 처음 기준이 되었던 in_Exp_1으로 설정한다.stage_5 : AddSub_Manoverflow가 생길 경우를 대비해서 1bit를 확장하여 최상위 비트에 0을 추가한다.stage_4에서 조사한 두 부호비트의 상황에 맞춰 같은 부호이면 두 유효숫자를 더하고, 다른 부호이면두 유효숫자의 차를 계산한다.stage_6 : Normal_1두 유효숫자의 연산 결과를 분석하는 함수연산 결과에 따라 지수 조정을 해야 한다. overflow가 생긴 경우, 지수 조정이 필요 없는 경우,지수 조정이 필요한 경우, 결과 값이 0인 경우로 나뉜다.어느 비트에서 처음으로 1이 발생했는지에 따라 구분된다.stage_7 : Normal_2유효자리를 정규화 하는 함수만약 carry가 발생했다면 exponent에 1을 더해준다.최종 결과 값을 저장한다.
본 Assignment 에서는 Unix 환경에서 파일 관련명령어인 find 을 구현하는 것이다.기본적인 find 의 기능은 사용자가 지정한 문자열에 기초해 파일을 찾는 것이다.본 Assignment find 에서는 -name (이름으로 찾기) -perm (퍼미션으로 찾기) -user -group(유저아이디 / 그룹아이디로 찾기) -type (파일타입으로 찾기) 옵션을 구현하며,하위디렉토리까지의 탐색을 기본으로 한다. find 와 grep 의 구현에 있어서 Unix파일디렉토리 구조에 대한 파악이 필요하며 기본적인 문자열 파싱과 디렉토리 구조가명령 수준에서 어떻게 보이는지에 대한 어느 정도의 개념이 필요하다.=========================================================================================find 구현 사항./myfind [패스] [-옵션] [수식]-name : 수식의 패턴에 맞는 이름으로 검색-perm : 수식의 퍼미션으로 검색-user : 수식의 소유자로 검색-group : 수식의 그룹으로 검색--help : 도움말 출력=========================================================================================프로그램 소스 (c 소스파일 + make 파일) / 한글 보고서 파일(배경지식,코드 다이어그램,알고리즘,결과,고찰) 레드햇9 / 페도라6,7,8 / gcc version 3.x ~ 4.x / 소스 코드 컴파일 및 실행 확인
본 Assignment 에서는 Unix 환경에서 파일 관련명령어인 grep 을 구현하는 것이다.본 Assignment grep 에서는 -n (라인 번호 출력) -i (패턴 자형 무시) -R (하위디렉토리 확장) 옵션을 구현한다.grep 의 구현에 있어서 Unix 파일디렉토리 구조에 대한 파악이 필요하며 기본적인문자열 파싱과 디렉토리 구조가 명령 수준에서 어떻게 보이는지에 대한 어느 정도의개념이 필요하다.grep 구현 사항./grep [-옵션] [패턴] [패스]-n -N : 파일의 줄번호 표시-i -I : 대소문자 구분없이 검색-R -r : 하위디렉토리 검색--help : 도움말 출력이진코드 (바이너리파일) 헥사코드 매칭 구현=========================================================================================프로그램 소스 (c 소스파일 + make 파일) / 한글 보고서 파일(배경지식,코드 다이어그램,알고리즘,결과,고찰) 레드햇9 / 페도라6,7,8 / gcc version 3.x ~ 4.x / 소스 코드 컴파일 및 실행 확인