영상 열화 모델(Image degradation model) 공간 영역에서 영상 f(x,y)와 공간필터 h(x,y)를 회선 처리하면 열화가 된 어ᄄᅠᆫ 형태의 영상도 만들 수 있다. 열화가 된 영상에 대해서 아래와 같이 표현한다. g(x,y) = f(x,y)*h(x,y) 기호 *는 회선 연산을 의미한다. 잡음 n까지 고려한다면 랜덤(random) 오차를 n(x,y)로 표현하여 식을 아래와 같이 표현할 수 있다. g(x,y) = f(x,y)*h(x,y)+n(x,y) 동일한 영상을 주파수 영역에서도 진행할 수 있다. 푸리에 변환의 선형성 때문에 회선 연산은 곱하기 연산으로 치환, 더하기 연산은 변하지 않고 아래 식으로 표현한다. G(i,j) = F(i,j)*H(i,j)+N(i,j) F, H, N은 f, h,..
1) 연습문제 3 zero-interleaved matrix 함수 구현 교재에 머리 부분 배열을 알려준다. 그리고 문제에서 명령어의 순서를 사용해야 하기 때문에, resize를 이용해서는 진행하지 않았다. 세 가지 필터 정의 ① Nearest ② Bilinear ③ Bicubic 교재는 zero-interleaved를 보여줬지만, 대신에 원본을 확대해보았다. Nearest - aliasing 생성된 느낌이 든다. Bilinear - aliasing이 생성되었다가 부드러워진 느낌이 든다. Bicubic - 너무 흐려져서 Blur 처리된 느낌이 든다. 원본을 확대한 것은 Bilinear와 Nearest의 사이지만 Bilinear와 유사한 느낌이다. 2) 연습문제 5 2배는 많고 8배는 큰 거 같아서 적당히 ..
1) 연습문제 1의 c, d, e, f 연습문제 1의 9X9 배열과 a~h 마스크이다. 이 중 c~f 마스크만 손으로 계산해봤다. 2) 연습문제 2의 c, d, e, f 연습문제 1의 9X9 배열 x, c~f 마스크 선언 연습문제 1의 c~f 마스크를 x에다가 적용(필터링)해보자. - mask c 적용 - mask d 적용 - mask e 적용 - mask f 적용 연습문제 1의 손으로 작성한 것과 결과가 같다. 3) 연습문제 4 – 필터(마스크)를 사용하여 공간 필터링을 수행해도 원 영상과 결과 동일 영상이 나타나는 필터를 설계 – 연습문제 1의 행렬을 사용하여 설계한 필터로 필터링한 결과를 제시 1. 중앙부 값이랑 동일 값으로 반환하면 공간 필터링을 수행해도 원본 영상과 값이 같다. 3X3에서 중앙값..
1) 다음의 작은 영상은 0~19 범위의 그레이 값들을 가지고 있다. 그레이 레벨 히스토그램과 이 히스토그램을 평활화하는 사상(mapping)을 계산하라. 히스토그램 평활화를 수행한 새로운 영상에 대해서 아래와 같은 형태의 8 X 8 그레이 값들의 격자를 만들어라. 기존 8 X 8 그레이 값 위 내용을 프로그래밍하여 결과를 비교해보자. 우선 원본과 직접 평활화한 영상을 비교하면 히스토그램이 전반적으로 펼쳐져 있는 것을 확인할 수 있다. 마지막은 프로그래밍으로 진행한 평활화인데 범위가 0~19가 아니라 0~255로 표현되어 있는 것을 확인할 수 있다. (그래서 axis([0 9 0 15])를 추가했다.) 2) 앞서 변환한 카메라맨 인덱스 영상을 입력으로 사용하여 히스토그램 평활화 알고리듬을 실행하는 프로그..
디지털 영상처리 교재(연습 문제 2, 3번) 1) blocks 영상 b에 대해서 다음의 명령들을 수행하라. 우선 ‘blocks.tif’를 가져와 다음 문제에 있는 명령을 수행해보자. [그림 1] blocks.tif [그림 2] imshow(bb2) 출력 결과 결과: 영상의 크기는 같다. 하지만 눈으로 보이는 품질은 많은 차이가 존재한다. imdivide 함수를 통해 64로 나누었을 때 데이터값이 손실되었고, 그 이후 immultiply 함수를 통해 64를 곱하여도 손실된 값은 돌아오지 않기 때문이다. 정확히는 255/64로 4개의 화소 데이터 중 한 화소 만을 가지고 저장이 되고, 다시 곱하였을 때 그 값을 곱하는 것이기 때문이다. 2) 문제 2에서의 값 64를 32와 16으로 치환하여 수행하라. 우선 ..
이번에는 디지털 영상처리 교재의 문제를 풀어보자 1) Bit Plane을 이용한 영상 워터마킹 • 카메라맨 영상을 비트 평면으로 표현하고 LSB 평면을 이름 영상으로 교체하라. • LSB 평면을 교체한 영상을 다시 8비트 그레이스케일 영상으로 저장하여 디스플레이 하라. 우선 밑과 같이 카메라맨 영상을 비트 평면으로 표현하였다. LSB 평면의 경우 내 이름 영상으로 추가하였다. 'name.png' 파일의 크기를 resize로 맞춘 후 LSB 평면 생성한 이름 영상이다. 이제 LSB의 내 이름과 비트 평면을 합성해보자. 아마 보기에는 카메라맨 영상으로만 확인되지만, 안에는 내 이름이 숨겨져 있을 것이다. 2) 카메라맨(256*256) 영상을 각각 128*128과 64*64 크기의 유효 해상도를 가지는 영상으..
매트랩을 통한 기본 영상(Image) 처리 방법을 알아보도록 하자. 1) 이미지 확장자명 바꾸기 기본적으로 매트랩은 파일 확장자명 변환이 자유롭다. 왼쪽 사진과 같이 파일이 저장된 것을 확인할 수 있다. 영상 출력 결과: cameraman.tif cameraman.jpg 블로그에서 tif 형식 지원을 안하나 보다... cameraman.png cameraman.bmp 2) 이진 영상 변환 im2bw라는 함수를 이용하여 간단하게 이진화를 할 수 있다. 앞서 진행한 변수 'v'에 “cameraman.tif” 파일이 저장되어 있다. 그 파일을 0.5 * 255 = 127.5를 임계값 설정 후 만들어진 이전 영상을 BW에 저장하였다. 영상 출력 결과: 3) 본인 사진을 인덱스 컬러 영상으로 변환 우선 ‘a’에 ..
매트랩을 통해서 디지털 영상처리를 진행하기 전 매트랩 기본적인 활용법에 대해서 공부해봤다. 설명은 주석을 다 달아놨으니 한 번 씩 훑어보면 도움이 되지않을까~ 1) 스칼라, 벡터 생성 2) 변수 초기화 및 벡터 출력 3) 행렬 크기 표시 4) 스칼라, 벡터 연산(pointwise) 5) 벡터 연산 함수 6) 벡터&벡터 연산 7) conv(a,b) 함수 이 부분은 a 벡터에 대한 b 벡터가 필터 작용을 한다. 8) 파일 저장 및 불러오기, 변수 초기화 9) for, find 함수 10) 사용자 정의 함수 제작 및 호출 11) 사진 좌우 대칭 함수 1. ‘convert_hand.m’ 사용자 정의 함수 만들기 2. ‘convert_hand.m’ 사용자 정의 함수 실행 3. ‘convert_hand.m’ 사용자..