블로그 이미지
Leeway is... the freedom that someone has to take the action they want to or to change their plans.
maetel

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
  • total
  • today
  • yesterday

Category

175p

> to divide an image into parts with a strong correlation with objects or areas of the real world contained in the image
- complete segmentation
: lower-level (context independent processing using no object-related model)
- partial segmentation
: dividing an image into separate regions that are homogeneous with respect to a chosen property (such as brightness, color, reflectivity, texture, etc)

http://en.wikipedia.org/wiki/Segmentation_(image_processing)

> segmentation methods
(1) global knowledge - a histogram of image features
(2) edge-based segmentations <- edge detection
(3) region-based segmentations <- region growing

eg. (2) + (3) => a region adjacency graph
http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=16938&objectType=FILE

cf. topological data structure


176p
6.1 Thresholding

Thresholding
: the transformation of an input image to an output (segmented) binary image

interactive threshold selection / threshold detection method

> gray-level
global thresholding
using a single threshold for the whole image
adaptive thresholding
using variable thresholds, dep. on local image characteristics
(<- non-uniform lighting, non-uniform input device parameters)
band thresholding
using limited gray-level subsets
(-> blood cell segmentations, border detector)
+ multiple thresholds
semi-thresholding
human-assisted analysis

> gradient, a local texture property, an image decomposition criterion

http://en.wikipedia.org/wiki/Thresholding_(image_processing)

179p

6.1.1 Threshold detection methods

p-tile thresholding
<- prior information about area ratios

histogram shape analysis
: gray values between the two peaks probably result from border pixels between objects and background 

multi-thresholding

mode method
: to find the highest local maxima first and detect the threshold as a minimum between them

to build a histogram with a better peak-to-valley ratio
(1) to weight histogram contributions to suppress the influence of pixels with a high image gradient
(2) to use only high-gradient pixels to form the gray-level histogram which should be unimodal corresponding to the gray-level of borders

histogram transformation

hitogram concavity analysis

entropic methods

relaxation methods

multi-thresholding methods

ref. A survey of thresholding techniques
Computer Vision, Graphics, and Image Processing, 1988
PK Sahoo, S Soltani, AKC Wong, YC Chen


180p

6.1.2 Optimal thresholding

optimal thresholding
: using a weighted sum of two or more probability densities with normal distribution

"estimating normal distribution parameters together with the uncertainty that the distribution may be considered normal"

ref.
Rosenfeld and Kak, 1982
Gonzalez and Wintz, 1987

minimization of variance of the histogram
sum of square errors
spatial entropy
average clustering

ref. An analysis of histogram-based thresholding algorithms
CVGIP: Graphical Models and Image Processing, 1993
CA Glasbey


The threshold is set to give minimum probability of segmentation error.

The method of a combination of optimal and adaptive thresholding:
(1) to determine optimal gray-level segmentation parameters in local sub-regions for which local histograms are constructed
(2) to model each local histogram as a sum of n Gaussian distribution
(3) to determine the optimal parameters of the Gaussian distributions by minimizaing the fit function.


Levenberg-Marquardt minimization
http://en.wikipedia.org/wiki/Levenberg-Marquardt_algorithm


183p

6.1.3 Multi-spectral thresholding

to determine thresholds independently in each spectral band and combine them into a single segmented image

to analyze multi-dimensional histograms (instead of histograms for each spectral band)

pre-processing - adjusting region shape (eg. boundar stretching)

Regions are formed from pixels with similar properties in all spectral bands, with similar n-dimensional description vectors.



184p
6.2 Edge-based segmentation

Edges mark image locations of discontinuities in gray-level, color, texture, etc.

to combine edges into edge chains that correspond better with borders in the image

partial segmentation
- to group local edges into an image where only edge chains with a correspondence to existing objects or image parts are present


185p

6.2.1 Edge image thresholding

quantization noise, small lighting irregularities => edge image

p-tile thresholding
using orthogonal basis functions (Flynn, 1972)

Sobel Mask (<- 5.3.2)
http://en.wikipedia.org/wiki/Sobel_operator

Canny edge detection (<- 5.3.5)
http://en.wikipedia.org/wiki/Canny_edge_detector

simple detectors => thickening - (directional information) -> non-maximal suppression (Canny edge detection <- 5.3.5)

Non-maximal suppression of directional edge data:
(1) quantize edge directions
(2) inspect the two adjacent pixels indicated by the direction of its edge
(3) if the edge magnitude of either of these two exceeds that of the pixel under inspection, delete it
Hysteresis to filter output of an edge detector:
- if a pixel with suitable edge magnitude borders another already marked as an edge, then mark it too


Canny reports choosing the ratio of higher to lower threshold to be in the range 2 to 3.
A computational approach to edge detection
IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986
J Canny


188p

6.2.2 Edge relaxation

edge context evaluation -> continuous border construction:
Based on the strength of edges in a specified local neighborhood, the confidence of each edge is either increased or decreased.

ref. Extracting and labeling boundary segments in natural scenes
IEEE Transactions on Pattern Analysis and Machine Intelligence, 1980
Prager, J. M.

ref. Hanson and Riseman, 1978

vertex type -> type of edge => possible border continuations:
the number of edges emanating from the vertex of an edge represent the type of the edge.

edge relaxation
: an iterative method, with edge confidences converging either to zero (edge termination) or one (the edge forms a border)

production system
http://en.wikipedia.org/wiki/Production_system

ref. Ballard and Brown's Computer Vision, 1982
3 Early Processing - 3.3 Finding Local Edges - 3..3.5 Edge Relaxation



parallel implimentation
http://en.wikipedia.org/wiki/Parallel_adoption


191p

6.2.3 Border tracing

(1) inner boundary tracing
(2) outer boundary tracing

The outer region border is useful for deriving properties such as perimeter, compactness, etc.


inter-pixel boundary of adjacent regions -> extended borders:
The existence of a common border between regions makes it possible to incorporate into the boundary tracing a boundary description process.
-> an evaluated graph consisting of border segments and vertices

extended boundary (Fig. 6.18)
: obtained by shifting all the UPPER outer boundary points one pixel down and right,
shifting all the LEFT outer boundary points one pixel ot the right,
shifting all the RIGHT outer boundary points one pixel down,
and the LOWER outer boundary point positions remain unchanged

Extended boundary has the same shape and size as the natural object boundary.


(3) extended boundary tracing
Detecting common boundary segments between adjacent regions and vertex points in boundary segment connections is based on a look-up table depending on the previous detected direction of boundary and on the status of window pixels which can be inside or outside a region.

chain code
double-linked lists

ref. A contour tracing algorithm that preserves common boundaries between regions
CVGIP: Image Understanding
Yuh-Tay Liow, 1991


(4) multi-dimensional gradients
Edge gradient magnitudes and directions are computed in pixels of probable border continuation.

(5) finite topological spaces and cell complexes
-> component labeling (-> 8.1), object filling, shape description


197p

6.2.4 Border detection as graph searching

graph
: a general  structure consisting of a set of nodes and arcs between the nodes.

costs
: weights of arcs

The border detection process ->
a search for the optimal path in the weighted graph + cost minimization

pixels - graph nodes weighted by a value of edge magnitude
edge diretions - an arcs matched with local border direction

(1)
A-algorithm graph search:
1. put all successors of the starting node with pointers to an OPEN list
2. remove the node with lowest associated cost
3. expand the node and put its successors on the OPEN list with pointers
4. if the node is the ending point, stop
http://en.wikipedia.org/wiki/A*_search_algorithm
Nils J. Nilsson

http://en.wikipedia.org/wiki/Monotonic
a monotonic function (or monotone function) is a function which preserves the given order.

oriented weighted-graph expansion

OPEN list

The optimal path is defined by back-tracking.

(2)
pre-processing (straightening the image data) for thin, elongated objects:
The edge image is geometrically warped by re-sampling the image along profile lines perpendicular to the approximate position of the sought border.

(3)
gradient field transform (based on a graph-search)


The estimate of the cost of the path from the current node to the end node has a substantial influence on the search behavior.

breadth-first search

raw cost function; inverted edge image

optimal graph search vs. heuristic graph search


> the evaluation cost functions (for graph-search border detection)
1) strength of edges forming a border
"If a border consists of strong edges, the cost of that border is small."
2) border curvature
"Borders with a small curvature are preferered."
3) proximity to an approximate border location
"The distance from the approximate boundary has additive or multiplicative influence on the cost."
4) estimates of the distance to the goal (end point)

Gaussian cost transformation:
the mean of the Gaussian distribution - the desired edge strength
the standard deviation - the interval of acceptable edge strengths


a good path with a higher cost vs. worse paths with lower costs
=> expansion of 'bad' nodes representing shorter paths with lower total costs
(* But, a good estimate of the path cost from the current node to the goal is not usually available.)

> modifications
- pruning the solution tree
- least maximum cost
- branch and bound
- lower bound
- multi-resolution processing
- incorporation of higher-level knowledge


Graph searching techniques ensure global optimality of the detected contour.

> detection of approximately stright contours
1) geometrical transformation (: polar-torectangular co-ordinate transformation)
-> to straighten the contour
 2) dividing line (to divide the image with the non-convex parts of the contour)
-> to search in opposite directions to separate

> searching without knowledge of the start and end points
- based on magnitudes and directions of edges
- to merge edge into edge chains (partial borders)
- bi-directional heuristic search
- bottom-up control strategy (->ch.10)


ref. Edge and Line Feature Extraction Based on Covariance Models
IEEE Transactions on Pattern Analysis and Machine Intelligence
Ferdinand van der Heijden, 1995


207p

6.2.5 Border detection as dynamic programming

http://en.wikipedia.org/wiki/Dynamic_programming
: a method of solving problems exhibiting the properties of overlapping subproblems and optimal substructure (described below) that takes much less time than naive methods

Dynamic programming is an optimization method based on the principle of optimality.

(6.22) (8-connected border with n nodes, m-th graph layer)
C(x_k(m+1)) = min ( C(x_i(m) + g(i,k)_(m) )
the number of cost combination computations for each layer = 3n
the total number of cost combination computatios =  3n(M-1) + n

- A-algorithm-based graph search does not require explicit definition of the graph.
- DP presents an efficient way of searching for optimal paths from multiple or unknown starting and ending points.
- Which approach is more efficient depends on evaluation functions and on the quality of heuristics for an A-algorithm.
- DP is faster and less memory demanding for a word recoginition
- DP is more computationally efficient than edge relaxation.
- DP is more flexible and less restrictive than the Hough transform.
- DP is powerful in the presence of noise and in textured images.

live wire; intelligent scissors
: an interactive real-time border detection method combines automated border detection with manual definition of the boundary start point and interactive positioning of the end point.
http://en.wikipedia.org/wiki/Livewire_Segmentation_Technique

In DP, the graph that is searched is always completely constructed at the beginning of the search process.

live lane
: tracing the border by moving a square window whose size is adaptively defined from the speed and acceleration of the manual tracing

+ automated determination of optimal border features from examples of the correct borders
+ specification of optimal parameters of cost transforms 


212p

6.2.6 Hough transforms

Hough transform:
objects with known shape and size -- (data processing) --> shape distortion, rotation, zoom -- (moving a mask) --> correlation (determining the pixel with the highest frequency of occurrence) + known information

- images with incomplete information about the searched objects
- additional structures and noise

http://en.wikipedia.org/wiki/Hough_transform
The purpose of the technique is to find imperfect instances of objects within a certain class of shapes by a voting procedure. This voting procedure is carried out in a parameter space, from which object candidates are obtained as local maxima in a so-called accumulator space that is explicitly constructed by the algorithm for computing the Hough transform.

http://en.wikipedia.org/wiki/Generalised_Hough_Transform
In the Generalized Hough Transform, the problem of finding the model's position is transformed into a problem of finding the transformation parameter that maps the model onto the image. As long as we know the value of the transformation parameter, then the position of the model in the image can be determined.

original Hough transform (if analytic equations of object borderlines are known - no prior knowledge of region position is necessary)
--> generalized Hough transform (even if an analytic expression of the border is not known)

Any straight line in the image is represented by a single point in the parameter space and any part of this straight line is transformed into the same point.

Hough transform
1) to determine all the possible line pixels in the image
2) to transform all lines that can go through these pixels into corresponding points in the parameter space
3) to detect the points in the parameter space

The possible directions of lines define a discretization of the parameter.

parameter space -> rectangular structure of cells -> accumulator array (whose elements are accumulator cells)

Lines existing in the image may be detected as high-values accumulator cells in the accumulator array, and the parameters of the detected line are specified by the accumulator array co-ordinates.
-> Line detection in the image is transformed to detection of local maxima in the accumulator space.
-> A noisy or approximately straight line will not be transformed into a point in the parameter space, but rather will result in a cluster of points, (and the cluster center of gravity can be considered the straight line representation.)

- missing parts, image noise, other non-line structures co-existing in the image, data imprecision


Generalized Hough transform
- arbitrary shapes
- partial or slightly deformed shapes, occluded objects
- measuring similarity between a model and a detected object
- robust to image noise
- search for several occurrences of a shape

Randomized Hough transform


221p

6.2.7 Border detection using border location informationd

(1) the location of significant edges positioned close to an assumed border
the edge directions of the significant edges match the assumed boundary direction
-> an approximate curve is computed to result in a new, more accurate border

(2) prior knowledge of end points (assuming low image noise and straight boundaries)
search for the strongest edge located on perpendiculars to the line connecting end points of each partition (; perpendiculars are located at the center of the connecting straight line)

(3) contour detection - active contour models (snakes) (-> 7.2)
user-provided knowledge about approximate position and shape of the required contour

222p

6.2.8 Region construction from borders

methods to construct regions from partial borders

(1) superslice method
thresholding for which the detected boundaries best coincide with assumed boundary segments

(2) probabilities that pixels are located inside a region closed by the partial borders
A pixel is a potential region member if it is on a straight line connecting two opposite edge pixels.


223p
6.3 Region-based segmentation



to divide an image into zones of maximum homogeneity

225p

6.3.1 Region merging


http://en.wikipedia.org/wiki/State_space_search
The set of states form a graph where two states are connected if there is an operation that can be performed to transform the first state into the second.




6.3.2 Region splitting

6.3.3 Splitting and merging


6.3.4 Watershed segmentation

6.3.5 Region growing post-processing

6.4 Matching

6.4.1 Matching criteria

6.4.2 Control strategies of matching

6.5 Evaluation issues in segmentation

6.5.1 Supervised evaluation

6.5.2 Unsupervised evaluation

6.6 Summary

'@GSMC > 박래홍: Computer Vision' 카테고리의 다른 글

Ch.10 Image Understanding  (0) 2008.12.15
Ch.9 Object Recognition  (0) 2008.11.25
2.4 Color images & 2.5 Cameras  (0) 2008.10.16
Ch. 2 The image, its representations and properties  (0) 2008.09.10
Ch.1 Introduction  (0) 2008.09.04
posted by maetel
2008. 3. 20. 17:17 @GSMC/정문열: Generative Art
2008-03-20 나무 @504


random

uniform distribution
http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29

standard normal distribution 정규 분포
http://en.wikipedia.org/wiki/Standard_distribution

cf. http://en.wikipedia.org/wiki/Uniform_distribution_%28ecology%29



VarX: [-1, 1] * [-1, 1] -> [-1, 1]
VarY

VarX (x,y) = ( R(x,y), G(x,y), B(x,y) )  <- 이미지


normalization

-1 <= {R, G, B} <= 1

cf. (-1,1)로 하면 (0,1)일 때보다 조작의 가능성이 높아진다

R, G, B: 8bits => (0,0,0) ~ (255,255,255)




'@GSMC > 정문열: Generative Art' 카테고리의 다른 글

class 3/27  (0) 2008.03.27
tree (data structure)  (0) 2008.03.24
references for basic programming  (0) 2008.03.17
Inversion Method  (0) 2008.03.08
Monte Carlo method + random sampling  (0) 2008.03.08
posted by maetel
2007. 11. 17. 00:44 Techne/Greenberg: Creative Code
사용자 삽입 이미지
Processing: Creative Coding and Computational Art

Ira Greenberg

friends of ED, 2007

소스코드 다운로드




Ira Greenberg at Miami University, Ohio
associate professor in the School of Fine Arts and Interactive Media Studies program
affiliate member of the Department of Computer Science and System Analysis

aesthetics and computation
expressive programming
emergent forms
net-based art
artificial intelligence
physical computing
computer art pedagogy

Keith Peters
Carole Katz
Mark Napier  www.potatoland.org


Questions to
(1) support@friendsofed.com with "617x" in the subject of your e-mail.
(2) processing@iragreenberg.com

http://java.sun.com/j2se/1.4.2/docs/api/index.html





Part One: Theory oof Processing and Computational Art

1 Code Art


'Techne > Greenberg: Creative Code' 카테고리의 다른 글

[Ira Greenberg] 1. Code Art  (2) 2007.11.28
posted by maetel
2007. 8. 11. 12:35 Hardware/network
library for p5:
1) JMyron: http://webcamxtra.sourceforge.net
    -> library (for intel mac): http://www.jibberia.com/projects
2) LibCV - alternative video capture for Processing: http://toxi.co.uk/p5/libcv  (mac에서는 안 되는 것으로 보임. JMF)

http://processing.org/reference/libraries/video/index.html

1) Ken Perlin's Physical Media (Graduate), Spring 2006: VIDEO TRACKING WORKING IN PROCESSING

2) Dan O'Sullivan's Physical Computing: ProcVid: Video Tracking in Processing


vdig for QT on windows:
http://www.abstractplane.com/products/vdig.jsp
http://blog.maxray.net/index.php?pl=183
http://a.parsons.edu/~getFrame/students/jacqueline/src/WinVDIG.exe

macam on mac:
http://webcam-osx.sourceforge.net
http://www.vimicro.com/english/product/pc003.htm
Damian at appleforum: "UVC라는 표준규격을 만족하는 웹캠은 별도의 드라이버 없이 Mac OS X 10.4.3 이후 버젼에서 바로 인식한다고 하는 군요. macam 홈페이지에서도 해당 모델을 확인할 수 있습니다. 다만, 이런 모델들은 10만원 대에서 가격이 형성되어 있어 iSight와 큰 차이가 없습니다."

USB 연장선
http://en.wikipedia.org/wiki/USB#Version_history
http://www.icoda.co.kr/i_product/pro_view.html?it_num=67368
리피터 (5m 이상일 경우): http://www.icoda.co.kr/i_product/pro_view.html?it_num=80036


related projects:
http://itp.nyu.edu/%7Edbo3/proj/index.htm#webcam


* (informed by 오동훈)
USB 연장선으로 노이즈가 발생할 정도로 긴 거리에서라면 1394용 카메라를 써야 한다. (약 50만원 안팎)
http://www.cylod.com/



'Hardware > network' 카테고리의 다른 글

RS232 data communication - MT9  (0) 2008.08.16
UART (범용 비동기화 송수신기)  (0) 2008.07.02
bluetooth on Mac  (0) 2008.06.17
posted by maetel
2007. 4. 20. 23:04 Code/Java
processing의 noise() 함수의 자바 소스코드가 궁금하다.

noise()
Perlin noise is a random sequence generator producing a more natural ordered, harmonic succession of numbers compared to the standard random() function. It was invented by Ken Perlin in the 1980s and been used since in graphical applications to produce procedural textures, natural motion, shapes, terrains etc.
 

 // PERLIN NOISE

  // [toxi 040903]
  // octaves and amplitude amount per octave are now user controlled
  // via the noiseDetail() function.

  // [toxi 030902]
  // cleaned up code and now using bagel's cosine table to speed up

  // [toxi 030901]
  // implementation by the german demo group farbrausch
  // as used in their demo "art": http://www.farb-rausch.de/fr010src.zip

  static final int PERLIN_YWRAPB = 4;
  static final int PERLIN_YWRAP = 1<<PERLIN_YWRAPB;
  static final int PERLIN_ZWRAPB = 8;
  static final int PERLIN_ZWRAP = 1<<PERLIN_ZWRAPB;
  static final int PERLIN_SIZE = 4095;

  int perlin_octaves = 4; // default to medium smooth
  float perlin_amp_falloff = 0.5f; // 50% reduction/octave

  // [toxi 031112]
  // new vars needed due to recent change of cos table in PGraphics
  int perlin_TWOPI, perlin_PI;
  float[] perlin_cosTable;
  float[] perlin;

  Random perlinRandom;


  /**
   * Computes the Perlin noise function value at point x.
   */
  public float noise(float x) {
    // is this legit? it's a dumb way to do it (but repair it later)
    return noise(x, 0f, 0f);
  }

  /**
   * Computes the Perlin noise function value at the point x, y.
   */
  public float noise(float x, float y) {
    return noise(x, y, 0f);
  }

  /**
   * Computes the Perlin noise function value at x, y, z.
   */
  public float noise(float x, float y, float z) {
    if (perlin == null) {
      if (perlinRandom == null) {
        perlinRandom = new Random();
      }
      perlin = new float[PERLIN_SIZE + 1];
      for (int i = 0; i < PERLIN_SIZE + 1; i++) {
        perlin[i] = perlinRandom.nextFloat(); //(float)Math.random();
      }
      // [toxi 031112]
      // noise broke due to recent change of cos table in PGraphics
      // this will take care of it
      perlin_cosTable = PGraphics.cosLUT;
      perlin_TWOPI = perlin_PI = PGraphics.SINCOS_LENGTH;
      perlin_PI >>= 1;
    }

    if (x<0) x=-x;
    if (y<0) y=-y;
    if (z<0) z=-z;

    int xi=(int)x, yi=(int)y, zi=(int)z;
    float xf = (float)(x-xi);
    float yf = (float)(y-yi);
    float zf = (float)(z-zi);
    float rxf, ryf;

    float r=0;
    float ampl=0.5f;

    float n1,n2,n3;

    for (int i=0; i<perlin_octaves; i++) {
      int of=xi+(yi<<PERLIN_YWRAPB)+(zi<<PERLIN_ZWRAPB);

      rxf=noise_fsc(xf);
      ryf=noise_fsc(yf);

      n1  = perlin[of&PERLIN_SIZE];
      n1 += rxf*(perlin[(of+1)&PERLIN_SIZE]-n1);
      n2  = perlin[(of+PERLIN_YWRAP)&PERLIN_SIZE];
      n2 += rxf*(perlin[(of+PERLIN_YWRAP+1)&PERLIN_SIZE]-n2);
      n1 += ryf*(n2-n1);

      of += PERLIN_ZWRAP;
      n2  = perlin[of&PERLIN_SIZE];
      n2 += rxf*(perlin[(of+1)&PERLIN_SIZE]-n2);
      n3  = perlin[(of+PERLIN_YWRAP)&PERLIN_SIZE];
      n3 += rxf*(perlin[(of+PERLIN_YWRAP+1)&PERLIN_SIZE]-n3);
      n2 += ryf*(n3-n2);

      n1 += noise_fsc(zf)*(n2-n1);

      r += n1*ampl;
      ampl *= perlin_amp_falloff;
      xi<<=1; xf*=2;
      yi<<=1; yf*=2;
      zi<<=1; zf*=2;

      if (xf>=1.0f) { xi++; xf--; }
      if (yf>=1.0f) { yi++; yf--; }
      if (zf>=1.0f) { zi++; zf--; }
    }
    return r;
  }

  // [toxi 031112]
  // now adjusts to the size of the cosLUT used via
  // the new variables, defined above
  private float noise_fsc(float i) {
    // using bagel's cosine table instead
    return 0.5f*(1.0f-perlin_cosTable[(int)(i*perlin_PI)%perlin_TWOPI]);
  }

  // [toxi 040903]
  // make perlin noise quality user controlled to allow
  // for different levels of detail. lower values will produce
  // smoother results as higher octaves are surpressed

  public void noiseDetail(int lod) {
    if (lod>0) perlin_octaves=lod;
  }

  public void noiseDetail(int lod, float falloff) {
    if (lod>0) perlin_octaves=lod;
    if (falloff>0) perlin_amp_falloff=falloff;
  }

  public void noiseSeed(long what) {
    if (perlinRandom == null) perlinRandom = new Random();
    perlinRandom.setSeed(what);
    // force table reset after changing the random number seed [0122]
    perlin = null;
  }

'Code > Java' 카테고리의 다른 글

constrain  (0) 2007.04.19
posted by maetel
http://www.shiffman.net/teaching/nature/waves/


 Vibration
http://www.lightandmatter.com/html_books/3vw/ch01/ch01.html


 Euler's Theorem
The general displacement of a rigid body with one point fixed is a rotation about some axis. This requires that one eigenvalue equals 1.


 Simple harmonic Oscillation
A simple harmonic oscillator is an oscillating system which satisfies the following properties.

    1. Motion is about an equilibrium position at which point no net force acts on the system.
    2. The restoring force is proportional to and oppositely directed to the displacement.
    3. Motion is periodic.

     Simple Harmonic Motion
    http://en.wikipedia.org/wiki/Simple_harmonic_motion
    * Isochronous


 Harmonic Oscillation

http://en.wikipedia.org/wiki/Harmonic_oscillation


posted by maetel
2007. 4. 19. 03:29 Computation/Language
processing.org 홈페이지의 http://dev.processing.org/source/가 아닌 내 컴퓨터의 하드에서 Processing의 source code를 보자.
(cp. Index of /trunk/processing/core/src/processing/core)


1. source code 받기

기본으로는 소스코드를 받지 않고 바로 실행모듈을 받는 거니까 지금 내 컴퓨터에는 소스코드가 없다. 그래서 우선 소스코드를 따로 받아야 한다.

1) 우선 CVS 프로그램을 설치해야 한다.
terminal에서 'cvs'라고 쳤더니 Usage가 나왔다. 컴퓨터에 CVS가 설치되어 있다는 뜻이다.
cf. CVS란? Concurrent Versions System -> def. and Gnu's intro
(공동 버전 시스템: 각종 소스의 버전을 관리할 수 있도록 도와주는 도구. 공동으로 진행하는 프로젝트 수행자들에게 편리한 도구로, Apache, Mozilla 등의 공개 프로젝트에서 사용되어 그 효능을 입증하였고, 우리나라에서도 KLDP(Korean Linux Documentation Project), JS Board 등의 공동 개발 작업에서 사용되고 있다.)

2) 그리고 SVN (Subversion) 프로그램을 설치해야 한다.
ref. http://dev.processing.org/build/
terminal에서 'svn'이라고 쳤더니 에러 메시지가 떴다. 컴퓨터에 SVN이 없기 때문이므로 여기에서 다운 받았다.

3) source code를 받는다.
terminal에서 'svn co svn://processing.org/trunk/processing'을 입력한다. svn://processing.org/trunk/processing 의 코드트리를 check-out (co) 하라는 명령이다.


2. 명령어 배우기

0) pwd - "print working directory"라고 지금 터미널이 어느 디렉토리(폴더)에 있는지 보여 주는 명령
eg. terminal에서 'pwd'를 쳤더니 /Users/lym라고 나왔다는 것은 지금 홈 디렉토리에 있다는 뜻이다.

1) grep - 텍스트 검색 명령
파일 (리스트) 에서 "PATTERN"을 찾는다. 특정한 파일에서 주어진 문장을 검색하는 기능인데 파일 뿐만 아니라 디렉토리를 통째로 검색할 수 있다.
옵션 중에 -R (recursive) 옵션을 쓰면 디렉토리 밑으로 끝까지 찾아 들어간다.
bzgrep, zgrep 등은 압축된 파일에서 찾을 때 쓴다.
eg. 'grep -R constrain processing'이라고 치면, processing 디렉토리 밑의 모든 파일에서 "constrain"이라는 문자열을 찾아 그 파일과 문자열이 있는 줄을 보여 준다.

2) man - 모든 명령과 프로그램의 매뉴얼 페이지를 보여 준다.
eg. 'man grep'이라 치면, grep이 구체적으로 뭘 하는 프로그램이며 어떻게 써 먹는지를 볼 수 있다.

3) apropos - 이 매뉴얼 페이지 중 한줄 요약 리스트를 검색한다.
뭔가 필요한 기능이 있는데 명령이나 프로그램을 모르면 apropos로 원하는 기능을 가진 명령이 있는지 찾아 보고, 있으면 man 으로 그 매뉴얼을 봐서 쓰면 된다.
eg. 뭔가를 검색하고 싶다면 일단 'apropos search'라고 하자. 그러면 매뉴얼 요약 중에 'search'라는 단어가 있는 명령어는 모두 보여 준다.

Tip. apropos 의 출력이 너무 많으면 grep으로 한번 더 "필터링"을 할 수 있다.
예로 다시 grep을 들면, search 외에 file 이라는 키워드도 생각할 수 있겠다.
그럼 'apropos search | grep file'이라고 하면 apropos 의 출력 중에 "file"이라는 단어가 있는 줄만 보여 준다.
cf. ' | ' 는 'pipe'라고 해서 유닉스의 기본 기능 중 하나인데 파이프 왼쪽의 출력을 오른쪽의 입력으로 돌리는 것이다.

4) h 또는 ? 또는 ctrl-C - help


'Computation > Language' 카테고리의 다른 글

Python  (0) 2007.06.26
features of object-oriented programming  (0) 2007.06.20
<HeadFirst Java> 클래스와 객체  (0) 2007.03.16
Java tutorials  (0) 2007.02.28
The Java™ Tutorials  (0) 2007.02.28
posted by maetel
2007. 4. 19. 00:17 Code/Java
constrain

ref. http://dev.processing.org/reference/everything/

View of /trunk/processing/core/src/processing/core/PApplet.java

constrain(float, float, float) - Static method in class processing.core.

public static final float constrain(float amt, float low, float high)

static public final float constrain(float amt, float low, float high) {
   return (amt < low) ? low : ((amt > high) ? high : amt);
 }



constrain(int, int, int) - Static method in class processing.core.

public static final int constrain(int amt, int low, int high)

  static public final int constrain(int amt, int low, int high) {
   return (amt < low) ? low : ((amt > high) ? high : amt);
 }


'Code > Java' 카테고리의 다른 글

noise()  (0) 2007.04.20
posted by maetel


my preparation for RB study:
 weight vs. mass http://en.wikipedia.org/wiki/Weight
= absolute vs. relative

gravitational force
http://en.wikipedia.org/wiki/Gravitational_force
Earth's gravity http://en.wikipedia.org/wiki/Earth%27s_gravity
    Free fall http://en.wikipedia.org/wiki/Free-fall

     지구의 반지름
    에라토스테네스 (Eratosthenes, 276 BC - 194 BC) http://100.naver.com/100.nhn?docid=110548
        http://en.wikipedia.org/wiki/Eratosthenes
        cf. 에라토스테네스의 체 (Erathosthenes'sieve) http://100.naver.com/100.nhn?docid=716415


     지구의 질량

    ref.
    http://en.wikipedia.org/wiki/History_of_gravitational_theory

        브라마굽타 [Brahmagupta, 598~665?] http://100.naver.com/100.nhn?docid=80291
            http://en.wikipedia.org/wiki/Brahmagupta
 

 force
http://en.wikipedia.org/wiki/Force
Force is defined as the rate of change of momentum with time:    \vec{F} = {\mathrm{d}\vec{p} \over \mathrm{d}t}.
The quantity \vec{p} = m \vec{v} (where m\, is the mass and \vec{v} is the velocity) is called the momentum. This is the only definition of force known in physics (first proposed by Newton himself). If the mass m is constant in time, then Newton's second law can be derived from this definition

http://en.wikipedia.org/wiki/Net_force

Newton’s Laws
제1법칙 - 관성의 법칙
제2법칙 - 가속도, 질량, 힘
제3법칙 - 작용/반작용의 법칙
http://www.lightandmatter.com/html_books/1np/ch04/ch04.html
http://www.physicsclassroom.com/Class/newtlaws/newtltoc.html

dissipative force - friction force, viscious force
gravitational force

momentum

torque <- rotation

stress <- deformation


Viscosity
http://en.wikipedia.org/wiki/Viscosity



 Friction
Hook's Law

spring

pendulum



cf.
http://en.wikipedia.org/wiki/Deformation











posted by maetel
2007. 2. 26. 00:13 Code
The Nature of Code - Forces

2007-02-25 @홍대 앞 잔디와 소나무: 믿음

class

'Code' 카테고리의 다른 글

array  (0) 2007.04.27
UNIX 기본 명령어  (0) 2006.12.25
PATH variable  (0) 2006.12.25
posted by maetel


my preparation for RB study:

scalar vs. vector

  vector http://en.wikipedia.org/wiki/Vector_%28spatial%29

  eg. speed vs. velocity http://en.wikipedia.org/wiki/Velocity

      http://www.scienceaid.co.uk/physics/forces/motion.html

  eg. distance (;path) vs. displacement http://en.wikipedia.org/wiki/Displacement_%28vector%29

http://en.wikipedia.org/wiki/Distance


coordinate & origin

  Cartesian coordinate http://en.wikipedia.org/wiki/Cartesian_coordinate_system

  (cf. 일반 상대성 이론에서 stress-energy 이론에 의해 코디네이트에 변형이 가해져 물리적 운동과 코디네이트의 일치가 깨지는 현상 소개) 


s(displacement) vs. v(velocity) vs. a(acceleration)

http://en.wikipedia.org/wiki/Position_vs._time_graph


normalization 

unit vector http://en.wikipedia.org/wiki/Unit_vector

  (ref. normalization (wave fn.) http://en.wikipedia.org/wiki/Normalisable_wavefunction

                   http://en.wikipedia.org/wiki/Normed_vector_space

 



Object Oriented Programming refers to art of breaking down a program into a set of self-contained parts.

Before we can begin to code any simple physics / motion simulation, we need to create a template class to store the data and perform the calculations associated with a vector.


"The term object-oriented design refers to the art of decomposing an application into some number of objects, self-contained application components that work together. The goal is to break your problem down into a number of smaller problems that are simpler and easier to handle and maintain."
-- Learning Java, Neimeyer, Knudsen 


In processing, a class is a "blueprint" or "template" for the creation of an object.

http://itp.nyu.edu/icm/shiffman/week3/index.html



A method is a name for an action. http://codeguru.earthweb.com/java/tij/tij0050.shtml

Method overloading is essential to allow the same method name to be used with different argument types. And although method overloading is a must for constructors, it’s a general convenience and can be used with any method.


instance methods / static methods


An example in the Processing library is an external Java class.
(cp. An internal Java class is a sketch in Processing.)


http://www.shiffman.net/itp/classes/nature/library/Vector3D.java

http://www.shiffman.net/teaching/nature/library/


Access Level  to Members of a Class - public, private, protected, or package-private (no explicit modifier)

http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html



ref.

Kinematics 운동학: 운동의 원인과는 상관없이 물체의 움직임만을 분석
http://en.wikipedia.org/wiki/Kinematics


the html version of Newtonian Physics, by Benjamin Crowell
http://www.lightandmatter.com/html_books/1np/ch03/ch03.html


Galileo Galilei

http://en.wikipedia.org/wiki/Galileo_Galilei

http://www.physicsclassroom.com/




hellomotion http://www.shiffman.net/itp/classes/nature/week02_s06/motion101/hellomotion.pde


boolean (<-Thing에서의 if) <= "flag"

http://en.wikipedia.org/wiki/Boolean


keyword (/reserved word 예약어) - eg. width, height, PI 


constructor (생성자)


NaN = Not a Number (숫자가 아닌 )


HeadFirst Java

2 - 객체: constructor(생성자), method(함수), property(변수, 객체)

cf. instance


Head 2 - 클래스와 객체



posted by maetel
2007. 1. 3. 05:09 Hardware

Wiring

void setup() {
  Serial.begin(38400);
}

void loop() {
  if (Serial.real() == 65) {
    Serial.print((analogRead(0)/4));
    Serial.print((analogRead(1)/4));
    Serial.print((analogRead(2)/4));


Processing

import processing.serial.*;
Serial port;
float xpos;

void setup() {
  size(256,256);
  noStroke();
  println(Serial.list());
  port = new Serial(this, Serial.list()[2], 38400);
//  port.clear();
}
void draw(){
 
background(0);
while (port.available() > 0) {
  xpos = port.read();
}
rect(xpos,100,20,20);
}


Wiring

int ax = 0; //set the pin number
int ay = 1;
int az = 2;
int x = 0; //the value of acceleration on x-axis
int y = 0;
int z = 0;

void setup() {
  Serial.begin(38400);
}

void loop() {
  x = analogRead(ax); //read the value of analog pin 0
  y = analogRead(ay);
  z = analogRead(az);
  Serial.print(x/4);
  Serial.print(y/4);
  Serial.print(z/4); //write the scaled value to the serial port
}


 

된장... shielding... orz

'Hardware' 카테고리의 다른 글

[Noah Shibley] eagle PCB  (0) 2008.04.01
smd toast oven  (0) 2008.03.24
soldering  (0) 2006.12.14
testing serial  (0) 2006.12.10
hardware term  (0) 2006.02.21
posted by maetel
2006. 12. 10. 17:23 Hardware

processing

// Serial Output + debug
int ledPin = 48;

int switchpin = 0;  // switch connected to pin 0
 
void setup() {
  pinMode(switchpin, INPUT);  // pin 0 as INPUT
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);         // start serial communication at 9600bps

}
 
void loop() {
  digitalWrite(ledPin, HIGH);
  Serial.print(1);                  // send 1 to Processing
  delay(500);

  digitalWrite(ledPin, LOW);
  Serial.print(0);                  // otherwise send 0 to Processing
  delay(300);
/*  delay(200);
  digitalWrite(ledPin, LOW);
  delay(200);
  if(digitalRead(switchpin) == HIGH)  // if switch is ON
  {
    digitalWrite(ledPin, HIGH);
        Serial.print(1);                  // send 1 to Processing
  }else{
    digitalWrite(ledPin, LOW);
    Serial.print(0);                  // otherwise send 0 to Processing
  }
  delay(100);                         // wait 100ms
  */
}

'Hardware' 카테고리의 다른 글

smd toast oven  (0) 2008.03.24
Wiring board + 가속도 센서 시리얼 통신 테스트  (0) 2007.01.03
soldering  (0) 2006.12.14
hardware term  (0) 2006.02.21
자이레이션  (0) 2006.01.22
posted by maetel
2006-05-30 @아트센터나비
아티스트를 위한 컴퓨터 언어의 이해

11. 프로세싱과 와이어링

이재곤



Jim Cambel

SMD (in LED)

James 클라 @NYU

LED를 MicroController와 함께 조명 시스템 구축

AchiGram

2족 보행로봇/RC모형에 들어가는 방향 조절 기능의 서브 모터

MC, felxibility sensor, bluetooth, PIC


+++



sensor -input-> micro-controller -output-> actuator

wiring - 8bit CPU 16
Arduino - wiring에 파생, 간략화한 것
BX-24 - 공대에서 기존에 써 왔던 복잡한 MC

<-input/output-> computer

processing, java, C++, Director, MaxMSP
(serial port를 통해 통신)


* transducer - 에너지의 형태를 전환시켜 주는 장치
eg. sensor, actuator


sensor
빛- CdS, 포토 다이오드, 포토 트랜지스터
소리/진동 - 마이크, 압전 소자(피에조 소자)
온도 - thermistor
가스- 메티놀, 에티놀, 오존
거리 -초음파 거리 센서, 적외선 거리 센서
압력/무게 - 압전 소자, 압력 센서
자기 - 홀 센서, 리드 스위치
위치, 속도, 회전 - 틸트 센서, 가속도 센서, 자이로 센서, 엔코더(볼마우스 안의 바퀴-회전 방향/수 계산, 잉크젯 프린터 안의 잉크와 노즐의 움직임을 통해 위치 측정)), GPS
인체 - 터치 센서 (미세 전류 -> 정전용량 방식)
기타 - RFID (카드 한 장 당 2-3천원, 콘트럴로의 가격도 많이 저렴화), Bluetooth


actuator
빛- 전구, LED, EL(굉장히 얇게 만들 수 있음. 소재가 분말 형식이므로 도포로 쓸 수 있어 flexible한 디스플레이가 가능.
eg. EL wire라는 빛을 내는 실 형태도 있음.)
소리/진동 - 스피커, 압전 소자
온도 - 히터

자기- 코일, 자석
위치/속도/회전- 모터(DC 모터- 속도가 빠르나 컨트롤이 까다로움), 서브 모터(컨트롤이 용이. 정확한 각도 만큼 회전/이동 후 정확히 정지 가능), 스페팅 모터(펄스로 움직여 신호를 한 번 줄 때마다 정확히 해당 정도만 회전하므로 속도도 조정 가능)




i/o board
- digital i/o * 40 - switch/LED
- analog input * 8
- analog output * 6 (PWM으로 표기)
- usb


전압 = 저항 X 전류
0=off=LOW=0V
1=on=HIGH=+5V



디지털 입출력
pinMode(pn,mode)
digitalRead(pn)
digitalWrite(pn, value)

0~39번 핀의 입출력 모드 설정
신호 입력/출력 (HIGH/LOW)


>> 아날로그 입력(10bit)
신호 입력(0~1023)

>> 아날로그 출력(8bit)
신호 출력(0~255)

>> 기타
delay() : 일정시간 실행정지(밀리세컨드 단위로 설정)



> push switch

- 가변저항 사용시 그 저항 범위와 유사한 고정저항을 달아 주면 된다.

- felx sensor - 2-4만원

- 서브 모터 - 펄스의 폭에 따라 회전 정도가 정해짐. 전압을 많이 먹으므로 어댑터가 필요하다.
회로의 동작 속도와 프로그램이 입력하는 신호의 속도 보다 느린 경우가 많으므로 delay등의 명령어를 통해 속도를 맞추어 주어야 한다.


> relay
- 작은 전압(리모컨 or 대기전압)으로 큰 전압(TV 등)을 조정할 때 사용.
- 안에 전자석과 역학적 스위치가 들어 있다.
- MC 회로와 별개의 전원을 쓴다.

> RS232c (usb 포트)
외부 장치와의 통신을 가능하게 함

posted by maetel
2006-05-23 @아트센터나비
아티스트를 위한 컴퓨터 언어의 이해

10. 프로세싱과  vision tracking 2

최승준

실제 작품을 제작할 때 가장 많이 다루고자 하는 실시간 영상처리 기법을 다루기 위해 근간이 되는 픽셀 연산 및 프레임 버퍼(Frame Buffer) 간에 이루어지는 연산 기법들에 대한 소개를 하고, 비전(Vision) 처리를 위해 프로세싱 코드를 어떻게 디자인 하는지 등에 관한 꼭 알아두어야 하는 내용을 간단한 작품을 제작하면서 익히도록 한다.

참고문헌
http://www.setpixel.com/author/?ID=setpixel


선행과제 - 웹캠으로 연결하기
http://moovl.com/

http://llk.media.mit.edu/projects/summaries/scratch.shtml

http://www.viscuit.com/

http://www.squeak.org/



JAD를 이용하여 숨겨진 코드를 decompile하여 공부 후 응용

posted by maetel
2006-05-16 @아트센터나비
아티스트를 위한 컴퓨터 언어의 이해

최승준

9. 프로세싱과 비전 트랙킹 1

플레이스테이션 2의 아이토이(EyeToy)란 게임을 접해본 일이 있을 것이다. 게임뿐만이 아니라 컴퓨터 비전(http://en.wikipedia.org/wiki/Computer_vision)은 미디어 아티스트에게도 각광을 받는 기법이다. 첫 강좌에서는 컴퓨터 비전을 다루기에 앞서 이를 잘 이해하기 위해 꼭 알아두어야 할 빛, 색, 눈에 대한 과학적인 이야기로부터 시작한다. 이어서 컴퓨터 비전에 대한 전반적인 소개 및 그래픽 작업을 하면서 많이 접할 수 있는 몇 가지 알고리즘(이미지 프로세싱 기법 등)에 대한 소개를 프로세싱 시연을 통해서 다루고, 프로세싱에서 컴퓨터 비전을 구현하기 위해 꼭 준비해야 하는 것들에 대해 알아보고자 한다.



http://www.cs.princeton.edu/%7Etraer/physics/

http://hyperscore.com/

http://hanmiu.com/i/


 Image Processing

R, G, B => 2^(8*3)=2^24=2  : 24  bit

32bit:  2^32

http://incubator.quasimondo.com/

image distortion through vertex control
http://incubator.quasimondo.com/processing/rubber_screen.php

file://localhost/Applications/Processing%200115/reference/copy_.html


Convolution Filter



http://processing.org/faq/bugs.html#video



posted by maetel
2006-05-02 @아트센터나비
아티스트를 위한 컴퓨터 언어의 이해

7. 프로세싱과 인터랙션 (2)

성기원

ref.
이론: 미디어와 디자인의 수사학적인(Rhetoric) 관점
실기: 시간함수로 창조하는 나만의 시계
http://sidi.hongik.ac.kr/~ipp/




http://processing.org/reference/PFont.html

posted by maetel
2006-04-25 @아트센터나비
아티스트를 위한 컴퓨터 언어의 이해

6. 프로세싱과 인터랙션 1  

성기원
key1sung@kaist.ac.kr

홍익대 시각디자인학과와 카이스트 산업디자인학과를 졸업했고, HCI2004 학회에서 우수논문상과 한국디자인학회에서 학술대상을 수상하였다. 홍익대 시각디자인학과, 영상대학원, 연세대 영상대학원에서 프로세싱과 인터페이스 디자인 수업을 강의해왔고, 번역과 저술을 하고 있다.


디자인의 패러다임이 변화함에 따라 시각 디자인의 역할이 정보를 알리고 전달하는 과거의 수동적인 기능에서 정보를 경험하고 선택하는 적극적인 기능으로 진화되고 있다. 이러한 네트워크 시대의 인터랙션 디자인은 오늘날 디자이너들에게 전통적 개념에서 탈피한 창조적인 사고와 논리적인 프로그래밍 능력, 그리고 인터페이스 디자인과 사용성 분석에 대한 지식을 절실히 요구하고 있다.
본 수업의 목적은 디지털 시대가 요구하는 창조성과 논리성을 개발하고 효과적인 인터랙션 디자인과 커뮤니케이션 능력을 훈련하는 데 있다. 이 수업에서는 전달하는 매체가 바뀜에 따라 그 컨텐츠에 미치는 영향과 변화를 개념적으로 공부하고, 그것을 직관적으로 경험하고 디자인하게 될 것이다. 이 수업을 통해 학생들은 전통적인 표현도구인 붓과 연필의 한계를 보완할 수 있는 뉴미디어를 디자이너의 표현도구로서 자유롭게 활용할 수 있을 것이다.

이론: 칸딘스키의 점선면, 추상예술, 그리고 한국성과 정체성
실기: 삼각함수를 이용한 기하학적인 인터랙션



Lo-Tech / Hi-Touch


> History

- 1999 xD_1 John Maeda
: Design by Numbers

- 2003 0707-11 xD_5 Casey Reas (미대 기반)
: Java 기반, open source, 교육용

: Next Design generation(?)
한국 SK본사 빌딩 12층에서 ICE 로이 해밀턴과 함께 강의
(삼성전자 제이 리? 미디어랩 졸업)

- 2003 1211-16 xD_6 Peter Cho
# 아이디어는 그림으로 그려서 프리젠테이션하는 연습을 들여라.

- 2004 0305-0611 홍익대 시각디자인과, Computing Design

- 2004 0902-1209 홍익대 영상대학원 Interactive Graphics 1+2
:카이스트 남택진 교수, 연대 김영수 교수

- 2004 0911- 아트센터 나비 Interactivity & Practice

- 2004 1113 서울 홍익대 정보통신센터 Q동 9층

- 2004 1217 서울 아트센터 나비 21층 회의실 C2

- 2005 0811 대전 카이스트 산업디자인학과 3층 세미나실


(진로 모색?
# 교수로서의 활로?
# 양민하씨처럼 인터랙션 디자인 회사 창업?
# 인터랙티브 광고 - 영화 마이너리티 리포트
# 인터랙티브 작가 - 상업적으로 판매 - bitform)
bitform서울 - NYU 졸업 이훈송(?))



> computing | design

computation | aesthetic : 수 |  미
-> 디자인을 컴퓨터(이진법 수)로 표현한다.

# 명인이란? 자신이 도구를 만들어 쓰는 사람
: 주어진 (심지어 통일된) 인터페이스에 종속되면 개성이 없어진다.
eg. 카일 크라우제?
eg. 존 놀, 토마스 놀 - 포토샵 제작

numbers | beauty

design by numbers

# 목표
1. 코딩, 함수보다 내용, 철학이 중요하다.  
2. 수학과 자연은 밀접하다.
3. 한국성의 구현: 라이프니츠가 동양의 음,양을 보고 영감을 얻어 2진법을 개발


이성 | 감성 :  수학 | 미분 :  양쪽 두뇌로 디자인하기
좌뇌 | 우뇌 :  분석 | 종합 :  논리적 생각 | 직관적 느낌


> Brain

- Nerve Cell 신경세포 90%, Basal Cell 지주세포 10%
- whole-Brain Learning


> face+action+face = interface

<기술복제시대의 예술작품> 발터 벤야민
: 인간이 상호간 대면 없이 기계를 매개로 소통한다.
: '아우라'가 사라진 복제(모사)가 엉클어져 있는 원본보다 낫다.
=> 기계가 없어지면 관계가 사라지게 되었다.

<시뮬라시옹> 장 보드리야르
: '접속(Log-in)한다, 고로 나는 존재한다.'

<저자의 죽음> 롤랑 바르트
: 만든 사람보다 사용하는 사람들이 더 위대하다.
: 사용자를 알지 않고서는 디자인이 불가하다.

<시지각 프로세스> 루돌프 아른하임 Rudolf Arnheim
- Eyegaze HW/SW
- Gestalt Theory
0: 보이는 것을 보는 것과 보고 싶은 것을 보는 것이 차이.
1: 단순성
2: connectivity
Illusion : 착시
eg.  적절한 이미지맵을 통해 사용자가 자연스럽게 메뉴트리를 따르도록 리드할 수 있다.

자극(정보) -(확산적 및 수렴적 탐색)-> 응시 -(시지각 사고 visual thinking : Gestalt theory)-> 해석 -(인지적 사고)-> 평가 -(문제 분석)-> 판단 -(해결 제안)-> 계획->선택->실행

정보처리 과정>
평가의 과정: 외부상태 지각 > 지각된 것을 해석 > 해석된 것을 평가 > 목표 설정
실행의 과정: 목표 설정 > 의도 형성 > 실행 순서 계획 > 실행


http://sidi.hongik.ac.kr/~ipp/

> 점선면+추상미술: 조형언어의 기본, 조형적 유희
ref.
<디자인의 개념과 원리> 찰츠 왈쉬레거, 안그라픽스
<점선면> 칸딘스키, 열화당 미술책방
<추상미술의 역사> 미진사 추상미술과 지의 자아, 인간사랑

<우리문화의 모태를 찾아서>

<3일만에 읽는 수학의 원리> 고바야시 미치마사, 서울만학사
사고력을 키우는 수학책> 오카베 츠네하루, 을지외국어
디지털이다
디지털 시대의 문화예술> 최혜실 엮음, ,문학과 지성사


C를 공부하라!


이세옥 영상디자인 석사1학기
sayok.aye@gmail.com

posted by maetel
2006-04-18 @아트센터나비
아티스트를 위한 컴퓨터 언어의 이해

5. 시각 예술가를 위한 수학

최승준


자연은 수학으로 디자인 되었다는 말에 감탄하며 동의하기는 쉽지만, 막상 그러한 사실을 알고는 있더라도 직접 이를 응용해 무언가를 해보는 것은 그리 쉽지 않다. 게다가 이는 C, C  , JAVA 등 프로그래밍 언어를 잘 알고 그 응용을 익숙하게 할 수 있다고 해서 바로 되는 일 역시 아니다.
컴퓨터 그래픽스나 인터랙티브 또는 미디어 아트에서 사용되는 기술의 상당 부분은 수학을 빼놓고서는 말할 수 없다. 때문에 상당수의 사람들이 벽에 부딪히게 되곤 한다. 그렇다고는 해도 컴퓨터 그래픽스에서 사용되는 수학은 쉽게 보여질 수 있다는 장점이 있고 게다가 Prcocessing은 이를 보여주는 게 무척 쉬워 탁월한 프로그램이다. '프로세싱으로 인쇄원고 만들기'에서 벡터 드로잉에 해당하는 내용이 다루어졌다고 한다면, 이 과정에서는 Texture를 수학적으로 짜는 방법을 Pixar의 Renderman에서 사용되는 Shading Language의 쉬운 응용을 통하여 경험해 볼 것이고, 자연선택(natural selection)이 아닌 미학적 선택(aesthetic selection)에 의해 펼쳐지는 세계를 볼 수 있게 될 것이다.
고대로부터 현대에 이르기까지 수많은 사람들이 수학의 아름다움에 매료된 이유를 직접 체험해 보기 바란다.

참고문헌
마이클 슈나이더 지음, 이충호 옮김, [자연, 예술, 과학의 수학적 원형], 경문사
David S. Ebert 외 지음, [Texturing and Modeling : A Procedural Approach], Morgan Kaufmann
http://www.genarts.com/karl/
https://renderman.pixar.com/products/tools/renderman.html



> signal 신호

sine/ cosine wave

eg.
1) 명암 => pattern
2) x,y 좌표 => 움직임
3) sodaplay
4) signal -> sound (sonic wave)


> Function 함수

eg.
1) line (x0, y0, x1, y1)
2) y=x  <=> f(x)=x


* pixel = picture cell (or) picture element

* scan line

pixel은 색의 값(RGB)과 투명도 값(A)을 가짐

* frame buffer


P Image.Pixels (좌표값) => color (RGB A)

void Add (int a)   <- fn을 정의
{
int b=4;
int c=b+a;
}

int Add(int a)
{
int b=4;
int c=b+a;
return c;
}


color SL1(float s, float t) //gradation
{
  float v= sin(s*PI)
  return color(v);
}


프로세싱에서 원좌표계 인식가능한가요?
(r,theta)
그럼 SL2와 동일한 결과 가능한가?



smoothstep




posted by maetel
2006-04-11 @아트센터나비
아티스트를 위한 컴퓨터 언어의 이해


4. Processing Print

김수정
서울대 미술대학 디자인학부 조교수
suzung@suzung.com


서울대학교 디자인학부 조교수이다. 국제 미디어아트 비엔날레 (미디어 시티, 서울), 아시아 디지털 어워드(후쿠오카, 일본), 서울 타이포그라피 비엔날레, 뉴욕 디지털 살롱 '97, 브루노 비엔날레(체코), 동경 타이프 디렉터스 클럽(TDC) 등 인터랙티브 미디어 분야의 국제적인 전시회에 초대받은 바 있다. 주요 연구분야는 컴퓨터 영상, 소프트웨어 아트, 그래픽 디자인이다.

그래픽 디자인을 처음 배우면서 시작한 것은 로트링(rotring) 제도용 펜과 자를 사용하여 선을 긋는 것이었다. 그래프 대지(화면 구성을 위해 사용하는 모눈 대지) 위에 0.1mm의 선을 일정한 간격으로 긋는 것은 펜과 자의 각도, 힘의 조절 등의 사용이 바로 되었을 때 가능한 일이다.
1mm 안에 오구(烏口: 가는 선을 그리기 위한 제도용 펜)를 사용하여 10개의 선을 그었다는 오래 전 그래픽 디자이너들의 이야기를 들은 적이 있다. 오늘날의 그래픽 디자이너들은 어도브(adobe)사의 그래픽소프트웨어인 일러스트레이터(illustrator)와 포스트스크립트(post script) 기술을 사용하여 1mm 안에 100 개의 선을 그을 수 있다.
일러스트레이터를 이용한 선 긋기에서 벗어나는 데 10년이 넘게 걸린 것 같다. 소프트웨어 묘법은 케이시 리아(Casey Reas)와 벤 프라이(Ben Fry)가 고안한 컴퓨터 언어인 프로세싱(http://processing.org)을 사용하여 만든 선화(線畵) 시리즈이다. 내가 하고 싶었던 것은 얼만큼 가는 선을 그을 수 있는가가 아니라 선의 본질, 즉 두 점을 연결하기 위한 위치 값과 선의 성격을 규정하기 위한 몇 개의 수치들을 사용하여 그림을 그려보는 것이었다.
"소프트웨어 묘법"이라는 작업에서 나는 프로세싱이 비상업적이고 수평적인 네트워크를 강조하는 소프트웨어라는 점에 착안해 나의 소스코드들도 그림과 함께 실었다. 그다지 특별할 것이 없는 몇 줄의 코드들은 선 그리기가 아니라 선 쓰기의 미니멀한 논리를, 그리고 기술의 탈권위적 사용을 보여주기 위함이다.
http://www.suzung.com




bezier

 sketch_060411a.pde
import processing.pdf.*;

void setup() {
    size(400, 400, PDF, "filename.pdf");
  }

  void draw() {
    //7)
for (int i=1; i<20; i=i+1){
  float rn1y = random(400);
  float rn2y = random(400);
  float rn1x = random(400);
  float rn2x = random(400);
  bezier(100,200, rn1x, rn1y, rn2x, rn2y, 300, 200);
}

    // draw something good here
  }

  void mousePressed() {
    exit();  // important!
  }
 
//size(400,400);
//background(255);

//1)
//point(200,200);
//point(201,200);
//point(202,200);
//point(203,200);

// Maeda instructed to draw your face by points or lines,
//insisting "training"


//2)
//for (int i=0; i<400; i=i+1){
//  point(i, 200);
//    }
//for (int i=0; i<400; i=i+1){
//  point(120, i);
//  }


//3)
//for (int j=0; j<400; j=j+1){
//  for (int i=0; i<400; i=i+1){
//    point(i,j);
//  }
//}


//4)
//for (int i=1; i<200; i=i+1){
//stroke(i);
//line(100,100,300,100);
//line(300,100,300,300);
//line(300,300,100,300);
//line(100,100,100,300);


//for (int i=1; i<400; i=i+2){
//line(0,0,i,400);
//}


//5)
//bezier(0,0,400,0,0,400,400,400);
//for (int i=1; i<400; i=i+1){
//bezier(100,200,200,200,200,0,300,200);
//}


//6)
//float rn = random(10);
//println (rn);




posted by maetel
2006. 4. 11. 15:12 Computation
Introduction to Computational Media @NYU
by Daniel Shiffman
http://itp.nyu.edu/icm/shiffman/

daniel.shiffman@nyu.edu
http://www.shiffman.net


Introduction to Computational Media @NYU
Main ICM site   http://stage.itp.nyu.edu/ICM




Week 1: Intro to Computer Graphics


programming


programming; the process of creating steps for a computer to perform a desired task.


The order of the instructions is just as important as the instructions themselves!


algorithm; a procedure or formula for solving a problem


data; the stuff that the program knows about and operates on


IMPORTANT ALGORITHM CONSTRUCTS:


Sequence:  series of steps

Selection:  choice between alternative paths

Iteration:  repetition


Steps for developing your program


# Specify your idea / problem to solve.

# Design an algorithm (sequence of steps) for implementing the idea.

# Express the algorithm as a computer program in a programming language.

# Compile and run the program.



Processing


Processing is an open source programming language and environment for people who want to program images, animation, and sound. It is used by students, artists, designers, architects, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is developed by artists and designers as an alternative to proprietary software tools in the same domain.


Processing is an open project initiated by Ben Fry (Broad Institute) and Casey Reas (UCLA Design | Media Arts). Processing evolved from ideas explored in the Aesthetics and Computation Group at the MIT Media Lab.


* Processing is an extension of Java and supports many of the existing Java structures, but with a simplified syntax. The application runs locally and exports programs to Java applets, which may be viewed over the Internet.


# index.html -- html source for viewing the applet page

# filename.jar -- compiled applet classes

# filename.pde -- source code


ref.

The History of Computer Programming Languages

Software Structures




Week 2 - Interaction & Variation


a variable; a named pointer to a location in the computer's memory; a storage locker for data



# Variables must have a name.


# PRIMITIVE TYPES boolean: true or false

# char: 16 bit Unicode character (0-65535)


# byte: 8 bits, -128 to 127

# short: 16 bits, -32768 to 32767

# int: 32 bits, -2147483648 to 2147483647

# long: 64 bits, -big number to big number

# float: 32 bit floating point number

# double: 64 bit floating point number




'Computation' 카테고리의 다른 글

Name Server 변경  (0) 2007.05.18
physics engine  (0) 2007.05.03
Ajax and Web 2.0  (0) 2006.03.27
code search engine  (0) 2006.02.18
software term  (0) 2006.02.17
posted by maetel
2006-04-04 @아트센터나비
아티스트를 위한 컴퓨터 언어의 이해

Basic Processing 2

7:00 ~ 7:20     몸풀기
이전 시간에 내준 숙제를 2명 정도 발표해본다. 동기부여는 충분히 되었습니까?
7:20 ~ 7:50     심화된 프로세싱 소개
processing.org 사이트 안에서, 그리고 그와 관련된 링크를 따라 함께 항해해본다. 어쩌면 슬쩍보고 지나쳤을 수 있는 것들에 대한 재발견. 필연적으로 혼자 공부해야 되는 시간이 올 때 의지가 되는 internet 상의 프로세싱과 관련한 많은 자료들.
7:50 ~ 8:00     쉬는 시간
8:00 ~ 8:20     프로세싱 설치.
안되는 사람은 정말 안되는, 프로세싱 설치하기와 관련한 꼭 피해가야 하는 pitfall들. FAQ & Discourse 활용하기.
8:20 ~ 9:00     프로세싱 시동.
가장 간단한 명령어들 소개와 노트북을 준비한 사람들은 직접 따라해 볼 수 있는 시간. 이상과 현실이 사정없이 충돌해 버리는 충격적인 경험.
연습~연습~연습의 중요성.
***준비물 : 여건이 되는 사람은 노트북.



wikipedia  - computer graphics



<Texturing and Modeling: a procedual approach>

assembly.org

cfxweb

Ken Perlin - perlin noise

www.singlecell.org/singlecell.html

www.pcho.net

acg.media.mit.edu - John Maeda

<Design by Numbers> 책, 애플리케이션 <- 프로세싱의 전신
<Creative ...>

generative algorithm -> artificial life

Karl Sims

www.sodaplay.com


terry winograd /wirograd

society of mind
alan kay

siggraph
sigchi
CSL - sony
Merl - Mitzbishi



- ref.

epicure.graffity.net/things/p5

processingblogs.org

www.shiffman.net/teaching/the-nature-of-code

ocw.mit.edu

flight404.com

www.quasimondo.com

www.codetree.org

complexification.net


Ted Chiang <이해> <72 글자>



posted by maetel
2006-03-28
아트센터나비 아카데미 - 아티스트를 위한 컴퓨터언어의 이해

2. Basic Processing (1)

program이라는 단어는 '미리 쓴다'라는 뜻을 지닌 라틴어에서 유래한 말이다. 프로그래밍은 작곡을 하거나 글을 쓰거나 그림을 그리는 것에 맥이 닿아 있다. 프로그래밍에서는 어떤 재현하고 싶은 현상이나 풀어 내야 할 문제가 제기되었을 때 이를 잘 헤아려서 자신이 다룰 수 있는 것들의 네트워크로 환원해 내는 능력이 중요하다. 하지만 그것만으론 충분치 않으며, 현상 또는 문제 자체를 직관적으로 이해하는 인간 고유의 지적인 능력이 가장 중요하다. 이런 의미에서 프로그래밍은 '유리알 유희'이며, 예술 그 자체, 마법과도 같은 힘을 가지고 있다고 생각한다. 이번 강의는 다양한 비유에서 프로그래밍을 바라보고, 환원주의와 전일주의적인 사고방식, 구상과 추상을 넘나들면서 참여자가 직접 글짓기라는 손쉬운 방법을 통하여 프로그래밍이 가지고 있는 다양한 매력을 경험해 볼 수 있는 기회가 될 것이다.

참고문헌
이인식 지음, [사람과 컴퓨터], 까치글방
더글러스 호프스태터 지음, 박여성 옮김, [괴델, 에셔, 바흐: 영원한 황금 노끈], 까치글방
http://en.wikipedia.org/wiki/Computer_program


강사: 최승준
erucipe@hanmail.net
프리랜서 프로그래머로 활동 중이다.
아트센터나비에서 진행한 다수의 교육 프로그램 및 전시에 강사/테크니션으로 참여했다.



7:00 ~ 7:30     프로세싱 소개 및 시연
'프로세싱'이란 무엇인지 간략히 소개하고, 프로세싱을 이용한 프로그래밍 기법을 시연한다. 실제 말을 하는 내용이 즉시 code로 바꿔지는 과정을 통하여 숙련자에게는 스케치 하는 것과 프로그래밍을 하는 것이 닮아 있음을 들어낸다.

7:30 ~ 8:10     프로그래머의 생각 엿보기
그렇다면 어떤 식으로 생각해야 이러한 것이 가능한 것인가?
전일주의와 환원주의 / Divide & Conquer / Scale / 관찰 / 문답법 / 0 & 1 / 기호 / bit & atom / 공감각 등등 다양하고 재미난 이야기들의 네트워크를 통하여 프로그래밍의 얼개에 대한 윤곽을 잡아보는 동시에 이러한 모든 생각들이 가능한 자기자신 안으로 dive해 볼 준비를 한다.

8:10 ~ 8:20    쉬는 시간

8:20 ~ 9:00    언령(言靈)과 프로그래밍
프로그래밍은 언어유희이고, 말은 힘을 가진다. 이제 실제 무엇인가 해보는 시간이다. 참여자는 필기도구를 준비하고, 강사가 제시한 현상에 대하여 나름의 언어, 나름의 Pseudo code로 할 수 있는한 구체적으로 글과 화살표 또는 간략한 그림을 수단으로 기술한다.
완성된 문장을 옆사람과 바꾸어 보고, 몇 명의 문장을 발표도 해본다.
첫번째 수업은 이것으로 마치며, 작성한 내용은 제출한다. (유기명 또는 무기명)
숙제 : Processing을 가지고 자신이 구체화 하고 싶은 현상에 대하여 오늘 수업 내용과 같은 방식을 이용하여 기술해 본다. 자신을 가속시킬 동기찾기의 일환.

*** 준비물 : 필기도구, 종이, 노트북(아날로그 / 디지탈)


rapid prototype (programming)
UX = user experience


 Processing
: an open source programming language and environment as a software sketchbook
(http://www.processing.org)

.pde : processing development environment


> programming

더글러스 호프스태터  <Go:del, Escher, Bach>
: 전일주의 & 환원주의 [인지과학]
cp. 로저 펜로즈 <황제의 >


Reductionism 환원주의 -> Holism 전일주의

- Duality : Wave / Particle
- Ambibalance 양면갈등 (eg. 애증 eg.만화 <총몽>)
- Synesthesia 지적 허용 (eg. '소리 없는 아우성')
- Strange Loop
비트겐슈타인 '가증? 유사성'

        > Reductionist ideas
http://wikipedia.org  - reductionism
: the idea that everything that exist ....


* pivonacci 수열

>      Divide and Conquer : Algorithm
해결가능한 작은 것부터 해결하기 시작하면, 결국 해결하고자 하는 것을 해결할 수 있다.

 >    Atom and Bit : 0, 1 (1 byte로 표현할 수 있는 경우의 수)
정보를 만들어 낸다 - 차이를 만들어 낸다 - 없는 것/ 있는 것의 구별

>      Socratic method
무지의 지
'두려워하지 말지어다'

>       Scope, Scale -(perception) -> Limit
- 하이델베르그의 '불확정성의 원리', 슈뢰딩거의 고양이
-  Universe or Multiverse
- 움베르트 에코 <장미의 이름>



> 언령 -말의 힘

pro - 미리
gram - 언어

- Genesis: God said, let there be light; and there was light.
- 신화, 환상문학 (북유럽 신화)
   > D&D (Dungeon and Dragon) 세계관
   > spell 주문 -> code와 Library
   > magic, alchemy
   > Mantra (eg. Matrix, Ghost in the shell)

    > Pseudo Code
http://en.wikipedia.org/wiki/Pseudo_code
: 프로그램밍 언어의 문법 자체를 몰라도 코딩을 할 수 있다.
eg. flowcharts

     > holistic (<-holism)
eg. 한의학, 동양사상
 - chaos
 - network: 'Locus 법칙' (ref. <링크>)
 - <Emergence> '개미 colony'
 - artificial life
 - swarm intelligence : 간단한 알고리즘을 통해 계 안에서 문제가 저절로 해결/태스크 최적화


> 빛과 그림자의 경계 속으로...

ref. 헤르만 헤세 <유리알 유희>  Glass Bead Game
Das Glaslen
abstact game of all arts and ...


posted by maetel
2006년 봄 아트센터나비 아카데미 -
아티스트를 위한 컴퓨터 언어의 이해


뉴미디어아트의 기본이 되는 컴퓨터 언어를 이해하고, 코드 작업 시 필요한 논리적 개념도 작성을 연습하는 12주 워크샵 프로그램이다. 프로세싱(www.processing.org) (www.nabi.or.kr/processing)이라는 시각예술가를 위한 프로그래밍 환경을 이용하여 프로그래밍의 기초와 여러 가지 응용가능성을 살펴보며, 자신의 아이디어를 컴퓨터가 이해할 수 있는 논리적 형태로 설계하는 과정을 경험해볼 수 있다.

posted by maetel