데이터분석/Vision Recognition

이미지 배열 슬라이싱 및 몇가지 기능

늘근이 2016. 1. 1. 14:11

배열 슬라이싱

 

im[i,:] = im[j,:] # set the values of row i with values from row j
im[:,i] = 100 # set all values in column i to 100
im[:100,:50].sum() # the sum of the values of the first 100 rows and 50 columns
im[50:100,50:100] # rows 50-100, columns 50-100 (100th not included)
im[i].mean() # average of row i
im[:,-1] # last column
im[-2,:] (or im[-2]) # second to last row

 

 

 

 

심플 반전

 

im2 = 255 - im #invert image

 

 

 

그레이스케일

 

 

im3 = (100.0/255) * im + 100 #clamp to interval 100...200

 

 

 

 

이미지 제곱

 

im4 = 255.0 * (im/255.0)**2 #squared

 

 

 

맨 위의 심플한 반전 이미지를 제외하고는 소수점으로 되어있다. 이를 TIFF형태로 저장하지 않으려면 다음과 같이 배열에서 이미지로 변할때 uint8 로 변환해 주어야한다. 안전하게 하려면 항상 하는편이 좋다.

아니면 에러가 떨어지는것이

PIL cannot write mode F to jpeg

위와같은 에러가 떨어진다.

 

(Scipy는 자동적으로 png로 저장한다면 변환을 하지만, PIL이나 scikit-image는 변환을 하지 않는다.)

 

pil = Image.fromarray(uint8(im))

 

히스토그램을 보려면

figure()

hist(cdf,128)

show()

 

Magnitude

얼마나 기존 배경과 차이가 있는지 설명해줄수 있다.

magnitude = sqrt(imx**2 + imy**2)

filters.sobel(im,1,imx)

imy = zeros(im.shape)

filters.sobel(im,0,imy)

magnitude = sqrt(imx**2 + imy**2)

pil = Image.fromarray(uint8(im))

 

 

 

형태학(Morphology)

 

from scipy.ndimage import measurements,morphology

im = array(Image.open('test01.jpg').convert('L'))

im = 1*(im<128)

labels, nbr_objects = measurements.label(im)

#조금더 계속 주고싶다면

im_open = morphology.binary_opening(im,ones((9,5)),iterations=2)

 

데이터 저장

http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html.