- 스택오버플로어 http://stackoverflow.com/questions/5478519/photo-mosaic-algorithm-how-to-create-a-mosaic-photo-given-the-basic-image-and-a
- 모자이크 아티클 http://drdobbs.com/184404848?pgno=1
- 모자이크 마소 기사 http://www.imaso.co.kr/?doc=bbs%2Fgnuboard.php&bo_table=article&sselect=wr_subject%7Cwr_content&stext=%B8%F0%C0%DA%C0%CC%C5%A9&soperator=0&x=0&y=0
2012년 3월 29일 목요일
mosaic
스캔 책 이미지 사이즈 줄이기에 대한 노력들.
- gimp filter로 해보기 : 간단히 되질 않는다. 포기
- opencv + python 해보기 : filter을 다시 찾아봐야 함.
- python + pil 로 이미지를 palette로 바꾸기 : 검색, 흰색만
- 할일: pil palette 공부하기
2012년 3월 26일 월요일
2012년 3월 19일 월요일
[opencv] ROI
crop으로 검색해서 나옴
http://nashruddin.com/OpenCV_Region_of_Interest_(ROI)
todo
http://nashruddin.com/OpenCV_Region_of_Interest_(ROI)
todo
- python 으로 일단은 해보기
- 매칭관련해서 공부해보기
2012년 3월 17일 토요일
opencv python
opencv, numpy 설치시
cv2 : c++ 바인드, 가장 최신
cv : c 바인드, 예전 버젼
이미지 로우딩 :
import cv2,cv
im = cv2.imread("file.jpg")
im : numpy.ndarray 로 return
src: numpy.ndarray
grey_src = cv2.cvtColor(src : numpy.ndarray, cv.CV_RGB2GRAY)
grey_src : numpy.ndarray
이미지 저장 :
import cv2
cv2.imwrite("파일명", numpy.ndarry=> 위의 im 같은값)
cv2 : c++ 바인드, 가장 최신
cv : c 바인드, 예전 버젼
이미지 로우딩 :
import cv2,cv
im = cv2.imread("file.jpg")
im : numpy.ndarray 로 return
src: numpy.ndarray
grey_src = cv2.cvtColor(src : numpy.ndarray, cv.CV_RGB2GRAY)
grey_src : numpy.ndarray
이미지 저장 :
import cv2
cv2.imwrite("파일명", numpy.ndarry=> 위의 im 같은값)
2012년 3월 16일 금요일
sicp 2.59
#lang racket
(define (element-of-set? x set)
(cond ((null? set) false)
((equal? x (car set)) true)
(else (element-of-set? x (cdr set)))))
(define (adjoin-set x set)
(if (element-of-set? x set)
set
(cons x set)))
(define (intersection-set set1 set2)
(cond ((or (null? set1) (null? set2)) '())
((element-of-set? (car set1) set2)
(cons (car set1)
(intersection-set (cdr set1) set2)))
(else (intersection-set (cdr set1) set2))))
;; 2.59
(define (union-set set1 set2)
(cond ((null? set1) set2)
((element-of-set? (car set1) set2)
(cons (car set1)
(union-set (cdr set1) (cdr set2))))
(else (cons (car set1) (union-set (cdr set1) set2)))))
(union-set '(1 2 3 4) '(2 3 4))
sicp 2.58
#lang racket
(define (deriv exp var)
(cond ((number? exp) 0)
((variable? exp)
(if (same-variable? exp var) 1 0))
((sum? exp)
(make-sum (deriv (addend exp) var)
(deriv (augend exp) var)))
((product? exp)
(make-sum
(make-product (multiplier exp)
(deriv (multiplicand exp) var))
(make-product (deriv (multiplier exp) var)
(multiplicand exp))))
(else
(error "unknown expression type -- DERIV" exp))))
(define (variable? x) (symbol? x))
(define (same-variable? v1 v2)
(and (variable? v1) (variable? v2) (eq? v1 v2)))
(define (make-sum a1 a2)
(cond ((=number? a1 0) a2)
((=number? a2 0) a1)
((and (number? a1) (number? a2)) (+ a1 a2))
(else (list a1 '+ a2))))
(define (=number? exp num)
(and (number? exp) (= exp num)))
(define (make-product m1 m2)
(cond ((or (=number? m1 0) (=number? m2 0)) 0)
((=number? m1 1) m2)
((=number? m2 1) m1)
((and (number? m1) (number? m2)) (* m1 m2))
(else (list m1 '* m2))))
(define (sum? x)
(and (pair? x) (eq? (cadr x) '+)))
(define (addend s)
(cond ((equal? (cddr s) '()) 0)
(else (car s))))
(define (augend s)
(cond ((equal? (length (cddr s)) 1) (caddr s))
(else (cddr s))))
(define (product? x)
(and (pair? x) (eq? (cadr x) '*)))
(define (multiplier p)
(car p))
(define (multiplicand p)
(cond ((equal? (length (cddr p)) 1) (caddr p))
(else (cddr p))))
(deriv ' (x + 3 * (x + y + 2)) 'x)
;;(deriv ' (x * (x * y)) 'x)
(deriv ' (x + x) 'x)
(deriv ' (x + x + y + 2) 'x)
(deriv (deriv (deriv ' (x * x * x) 'x) 'x) 'x)
2012년 3월 15일 목요일
sicp 2.57
#lang racket
(define (deriv exp var)
(cond ((number? exp) 0)
((variable? exp)
(if (same-variable? exp var) 1 0))
((sum? exp)
(make-sum (deriv (addend exp) var)
(deriv (augend exp) var)))
((product? exp)
(make-sum
(make-product (multiplier exp)
(deriv (multiplicand exp) var))
(make-product (deriv (multiplier exp) var)
(multiplicand exp))))
(else
(error "unknown expression type -- DERIV" exp))))
(define (variable? x) (symbol? x))
(define (same-variable? v1 v2)
(and (variable? v1) (variable? v2) (eq? v1 v2)))
(define (make-sum a1 a2)
(cond ((=number? a1 0) a2)
((=number? a2 0) a1)
((and (number? a1) (number? a2)) (+ a1 a2))
(else (list '+ a1 a2))))
(define (=number? exp num)
(and (number? exp) (= exp num)))
(define (make-product m1 m2)
(cond ((or (=number? m1 0) (=number? m2 0)) 0)
((=number? m1 1) m2)
((=number? m2 1) m1)
((and (number? m1) (number? m2)) (* m1 m2))
(else (list '* m1 m2))))
(define (sum? x)
(and (pair? x) (eq? (car x) '+)))
(define (addend s)
(cond ((equal? (cdr s) '()) 0)
(else (cadr s))))
(define (augend s)
(cond ((equal? (cdr s) '()) 0)
(else (cons (car s) (cddr s)))))
(define (product? x)
(and (pair? x) (eq? (car x) '*)))
(define (multiplier p)
(cond ((equal? (cdr p) '()) 1)
(else (cadr p))))
(define (multiplicand p)
(cond ((equal? (length (cddr p)) 1) (caddr p))
(else (cons (car p) (cddr p)))))
(deriv '(+ (+ x 3) x) 'x)
(deriv '(+ (+ x x) (+ x x)) 'x)
(deriv '(+ (+ (+ x x) x) x) 'x)
(deriv '(+ x x x) 'x)
;;(deriv '(+ x x x (+ x 3)) 'x)
(deriv '(* x x ) 'x)
(deriv '(* x x x) 'x)
(deriv '(* (* x y) x) 'x)
(deriv '(* x y x) 'x)
(deriv '(* (* x y) (+ x 3)) 'x)
;;'(+ (* x y) (* y (+ x 3)))
(equal? (deriv '(* x y (+ x 3)) 'x) (deriv '(* (* x y) (+ x 3)) 'x))
2012년 3월 14일 수요일
원주율 구하기
#lang racket
;; 라이프니츠의 공식
(define (findpi current result add)
(cond ((> current 10000000) (* 4 result))
(else
(cond ((equal? + add) (findpi (+ current 2) (+ result (/ 1 (+ current 2))) -))
((equal? - add) (findpi (+ current 2) (- result (/ 1 (+ current 2))) +))))))
;; 오일러의 식
(define (findpi2 current result)
(cond ((> current 10000000) (sqrt (* 6 result)))
(else (findpi2 (+ current 1) (+ result (/ 1 (* current current)))) )))
2012년 3월 7일 수요일
2012년 3월 6일 화요일
sockjs
sockjs 종류
To Do
- client lib
- SockJS-client JavaScript client library
- 웹소켓 같은 object을 SockJS라고 자바스크립트 lib로 제공
- Websocket을 지원하지 않는 브라우저에서도 사용가능
- Server lib
- SockJS-node Node.js server
- SockJS-erlang Erlang server
- SockJS-lua Lua/Luvit server
- SockJS-tornado Python/Tornado server
- vert.x Java/vert.x server
To Do
- sockjs-erlang 실행 해보기
- https://github.com/sockjs/sockjs-erlang
opencv 삽질 일기
Python + opencv 삽질
1. 이미지 threshold 해보자고 도전
2. C++ 예제보고 python삽질 시작
3. C++ 처럼 파라미터 어떻게 넘길까 뻘짓하다가 검색하니 바로 나옴
4. 제대로 다 했는데 이제 이미지가 일차적으로 그레이 변환이 안됨 짜증
5. cv2로 이미지 로딩 일차 그레이 변환해도 안되서 cv로 했더니 이젠 gif는 로딩 못함
6. 그나마 Python은 pil로 가능할꺼 같은데 될런지
%스캔 이미지 리사이즈 어떻게 찾다가 아직도 헤메고 있네 이젠 거의 다 된거 같은게 ㅡㅡ
7. IplImage -> cv::Mat or cvMat로 만들어진 api 없어서 포기
8. gif 이미지 경우는 그냥 jpg로 변경을 생각해봄.
9. 그래서 pil 찾아봤더니 이게 이게 또 쉽지가 않네 ㅡㅡ;;;
10. import Image
im = Image.open("파일")
im.convert("RGB")
im.save("파일.jpg")
11. 이랬더니 im.mode 가 P 라서 안됨.
12. 안되는게 뭐가 이렇게 많은지...
13. 이럴때 RGB로 변경은
14. http://www.pythonware.com/library/pil/handbook/imagepalette.htm
15. 위의 걸로 해서 다시 도전해봐야 겠음. ㅡㅡ;;
1. 이미지 threshold 해보자고 도전
2. C++ 예제보고 python삽질 시작
3. C++ 처럼 파라미터 어떻게 넘길까 뻘짓하다가 검색하니 바로 나옴
4. 제대로 다 했는데 이제 이미지가 일차적으로 그레이 변환이 안됨 짜증
5. cv2로 이미지 로딩 일차 그레이 변환해도 안되서 cv로 했더니 이젠 gif는 로딩 못함
6. 그나마 Python은 pil로 가능할꺼 같은데 될런지
%스캔 이미지 리사이즈 어떻게 찾다가 아직도 헤메고 있네 이젠 거의 다 된거 같은게 ㅡㅡ
7. IplImage -> cv::Mat or cvMat로 만들어진 api 없어서 포기
8. gif 이미지 경우는 그냥 jpg로 변경을 생각해봄.
9. 그래서 pil 찾아봤더니 이게 이게 또 쉽지가 않네 ㅡㅡ;;;
13. 이럴때 RGB로 변경은
lut = im.resize((256, 1)) lut.putdata(range(256)) lut = lut.convert("RGB").getdata() # lut now contains a sequence of (r, g, b) tuples
import image
im = Image.open("파일")
rgb = im.convert("RGB")
rgb.save("파일.jpg")
16. gif 파일 jpg로 변경
17. cv2로 threshhold 처리
18. 소스
import cv2,cv,Image
threshold_value = 0
threshold_type = 3
MAX_VALUE = 255
MAX_TYP = 4
MAX_BINARY_VALUE= 255
def main():
im = Image.open("IMG.gif")
rgbimage = im.convert("RGB")
rgbimage.save("IMG.jpg")
src2 = cv2.imread("IMG.jpg")
src_grey = cv2.cvtColor(src2,cv.CV_RGB2GRAY)
result, dest = cv2.threshold(src_grey,threshold_value,MAX_BINARY_VALUE,threshold_type)
cv2.imwrite("reslt.jpg",dest)
if __name__ == "__main__" :
main()
19.에러는 안 나는데. 이게 용량만 늘어남. 변환는 없음 ㅡㅡ;;
19.1 용량이 늘어난 이유: palette 이미지에서 rgb로 변환을 해서 그렇게 됐음. ㅡㅡa
20. 소스상의 에러는 없음. 다 제대로 돌아감. 근데 내가 가진 이미지는 왜? 제대로 되는게 없네 ㅡㅡa
im = Image.open("파일")
rgb = im.convert("RGB")
rgb.save("파일.jpg")
16. gif 파일 jpg로 변경
17. cv2로 threshhold 처리
18. 소스
import cv2,cv,Image
threshold_value = 0
threshold_type = 3
MAX_VALUE = 255
MAX_TYP = 4
MAX_BINARY_VALUE= 255
def main():
im = Image.open("IMG.gif")
rgbimage = im.convert("RGB")
rgbimage.save("IMG.jpg")
src2 = cv2.imread("IMG.jpg")
src_grey = cv2.cvtColor(src2,cv.CV_RGB2GRAY)
result, dest = cv2.threshold(src_grey,threshold_value,MAX_BINARY_VALUE,threshold_type)
cv2.imwrite("reslt.jpg",dest)
if __name__ == "__main__" :
main()
19.에러는 안 나는데. 이게 용량만 늘어남. 변환는 없음 ㅡㅡ;;
19.1 용량이 늘어난 이유: palette 이미지에서 rgb로 변환을 해서 그렇게 됐음. ㅡㅡa
20. 소스상의 에러는 없음. 다 제대로 돌아감. 근데 내가 가진 이미지는 왜? 제대로 되는게 없네 ㅡㅡa
2012년 3월 5일 월요일
python package tool
- pip : sudo apt-get install python-pip
- easy_install : sudo apt-get install python-setuptools
opencv
- prerequisite
- python 2.5 이상
- g++
- cmake
- pip install numpy
- sudo apt-get install python-dev
- install : linux
- http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3.1/ 파일 다운
- tar -jxvf 다운로드 파일
- cd 압축해제 폴더
- mkdir release
- cd release
- cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..
- make && sudo make install
2012년 3월 2일 금요일
2012년 3월 1일 목요일
emacs 2.4 설치
sudo add-apt-repository ppa:cassou/emacs
sudo apt-get update
sudo apt-get install emacs-snapshot
mkdir ~/.emacs.d/
cd ~/.emacs.d
emacs init.el
재시작후
sudo apt-get update
sudo apt-get install emacs-snapshot
mkdir ~/.emacs.d/
cd ~/.emacs.d
emacs init.el
(require 'package) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t) (package-initialize)
재시작후
M-x package-refresh-contents
M-x package-install RET starter-kit RET
피드 구독하기:
글 (Atom)