전공 과목 이수2👨‍💻 75

인덱스

인덱스의 목적은! 원하는 데이터에 신속하게 접근하기 위함. 주키와 후보키는 개체무결성제약조건(변경사항 관리) 외래키는 참조무결성제약조건(변경사항 관리) 즉, 값들에 대해 영향받음(데이터변경에 영향받음) 검색키는 다른키들과는 다르게 검색성능이 좋아야한다 -> 인덱스 생성 검색키는 값들에 영향을 받지 않고, 데이터 검색 성능에만 영향받음 하나의 테이블에 주키(primary key)는 하나여야함. 하지만 , 검색키들은 하나의 테이블에 여러개 존재할 수 있음. # 검색키 Search Key - 파일에서 원하는 레코드를 찾기 위한 칼럼들의 집합 - 하나의 테이블에 하나 이상의 검색키들이 존재할 수 있음 = 여러개의 인덱스들이 존재가능 # 인덱스 파일의 구성 엔트리 검색키 ("김갑동") 포인터 (해당 위치의 레코드..

엣지검출 pyplot.imshow vs cv.imshow

# pyplot.imshow vs cv.imshow 1) pyplot.imshow() 1채널, 부동소수 영상은 부호가 있는 수를 표현할 때 매우 편리하다. 데이터의 범위나 자료형에 영향 받지 않고 최소, 최대를 구해 자체 정규화(흑백일때)하여 출력한다. cmap 파라미터의 설정에 따라 여러 color map을 활용한 영상 출력을 시도할 수 있다. cv.imshow() 처럼 흑백 모노 그레이로 표현하려면 cmap='gray'로 설정하여야 한다. 그렇지 않으면 default pseudo color map이 선택되어 칼라로 1채널 영상이 출력된다. 2) cv.imshow() 함수의 출력 범위 부동소수 데이터: 0~1의 값만 출력한다. 음수는 0으로 간주하고 1을 넘는 값은 1로 간주한다. 정수형 데이터: 0~..

파일 내 레코드 구조, 데이터 사전 저장장치

테이블은 칼럼(열)과 로우(행)으로 구성되어 있다 -> 추상적인 개념. 파일로 가게되면 행이 레코드가 된다. 레코드는 여러개의 필드로 구성되어 있는데, 열이 레코드에서는 필드가 된다. # 파일 구성 방법 테이블은 레코드들의 집합 - 힙 파일 구조 : 공간이 있으면 배정 - 순차파일 구조 : 주어진 키 (검색키)값에 따라 연속적인 순서로 배정 검색하는것은 조건이 적용되는 것. 이때, 조건값이 검색키. 정렬은 검색/시행착오 과정을 줄여줌 - 해싱파일 구조 : 속성들을 해시함수에 적용하고 파일 내 위치를 정함. 시행착오 x ex 레코드 구성) "홍길동" | 컴공 | 2019 | 3.8 일 때, 예시의 레코드를 찾으려면 해시함수H("홍길동") 한다. H("홍길동")=57일때, 파일 내 57번째에는 홍길동의 레코..

파일 구조

데이터베이스는 많은 파일들로 구성됨. # 파일 - 디스크에 영구적으로 저장 - 레코드들의 논리적인 구조 -> 디스크의 블록에 대응 # 블록 ** 파일들이 읽고 쓰는 것은 블록단위로 수행됨. - 데이터 전송의 단위 (cpu와 디스크 사이에 파일을 주고받는 단위) **중요** 하나의 파일은 여러개의 블록으로 구성됨 블록의 크기는 고정됨 파일의 입출력 단위는 블록 하나의 블록은 여러개의 코드로 구성됨 코드가 블록을 초과할 수는 없음 한 개의 코드가 두 개 이상의 블록에 걸쳐서 존재할 수는 없음 # 고정길이 레코드 - 각 레코드는 53바이트로 고정 -> 레코드의 크기가 53이 아니면 레코드 낭비 - 삭제된 레코드를 나중의 삽입을 대비해 가만히 냅둔다. 새로운 데이터를 끼워만준다 (크기는 같으므로) - 고정된 길..

RAID

# MTTF = 평균 가동 시간 ## RAID (Redundant Array of Independent Disks) 많은 수의 디스크를 병렬화 데이터 중복화 가능 -> 저장의 신뢰성 향상 # 미러링 - RAID중복 - 모든 디스크마다 복사디스크를 마련함 - 논리적인 디스크 1개 = 물리적인 디스크 2개 (삭제포함 쓰기는 두 디스크 모두에서 이뤄짐) - 만약, 두 디스크의 MTTF가 겹치는 경우는 거의 발생하지 않는다 -> 신뢰성이 굉장히 높음 - 비용이 많이 소요됨 # 분산(Striping) - 여러 개의 디스크에 데이터를 분산 -> 병렬접근으로 전송속도 향상 - 디스크 배열을 하나의 논리적인 큰 디스크로 간주 1) 비트단위 분산 디스크 수가 8의 배수이므로 병렬처리르 통해 8배의 전송속도를 얻음. 2)..

이미지 가로, 세로 평균필터링 적용

# 1) : 실습 3을 2x2 서브 화면으로 나누고, 4번째 화면에는 양방향(가로/세로)으로 평균필터링한 영상을 출력하시오. Path = '../data/' # 현재 상위 폴더의 상위 폴더 아래에 있는 Images 폴더. Name = 'lenna.tif' FullName = Path + Name monarch = cv.imread(FullName) monarch = monarch[..., ::-1] fig = plt.figure(num = 'mission filter') #,figsize=(8,8) plt.subplots_adjust(left=0.02, right=0.9, bottom=0.03, top=0.9) plt.subplots(constrained_layout=True) # 최적의 사이즈로 변환,..

커널 / 필터링

# 실습 1: OpenCV 기반의 간략형 실험 - averaging kernel을 사용한 filtering def prt_mtx(a, fmt): # 어레이를 출력하는 함수 print(f"\n shape of the array={a.shape}") for r in range(a.shape[0]): for c in range(a.shape[1]): print(f"{a[r, c]:{fmt}}", end="") print() cv.imshow('img', img) N = 31 #N = 7 kernel = np.ones((N, N), np.float32)/(N * N) # N*N으로 나누어 정규화한다. print(np.sum(kernel)) # 커널의 모든 원소의 값을 합하면 1이 된다. (출력 0.9999..)..

이미지 위에 마우스로 사각형 그리기

https://velog.io/@codren/%EC%B9%B4%EB%A9%94%EB%9D%BC%EC%99%80-%EB%8F%99%EC%98%81%EC%83%81-%EC%B2%98%EB%A6%AC -> 참고 비디오 파일 읽어온다 capture = cv2.VideoCapture(FullName) 영상의 total frame capture.get(CAP_PROP_FRAME_COUNT) 현재 프레임 번호 capture.get(CAP_PROP_POS_FRAMES) 속성변경 함수 capture.set(속성상수, 지정하고싶은 속성값) -> retval 성공 유무 ROI *중요* OpenCV에서는 ROI를 mouse drag 동작으로 화면상에 쉽게 선택할 수 있는 selectROI() 함수를 제공한다. retval =..

저장장치

## 저장장치 계층 (캐시, 메인메모리, 플래쉬메모리, 디스크 ) # 캐시 (레지스터와는 다름) - 가장 빠르고, 가장 비싸다. - 하드웨어가 관리 - Buffering 으로 속도증가 # 메인메모리 = 주기억장치 - 연산에 이용하는 데이터 저장 - 개인컴퓨터: 수 Giga - 대용량 서버: 수백 Giga -그래도 전체 DB를 저장하기에는 태부족, 고가 - 정전, 시스템 오류 -> 내용 손실 # 플래시 메모리(Flash Memory) - 비휘발성, 주기억장치보다 저렴 - 자기 디스크 드라이브 대체 - SSD(Solid State Drive) - 적절한 용량일 경우 - 최대용량: 2013년 기준 2테라 제품 출시 - HDD보다 빠름 -> 데이터 캐시 역할 # 자기 디스크 저장장치(Magnetic Disk S..