1차원 바코드 인식은 이미지에서 바코드 영역 전체를 분리하는 과정이 없이도 처리가 가능하다. 이미지의 한 스캔라인이 바코드 영역에 걸쳐있기만 해도 인식하는데 충분하기 때문이다. 스캔라인에서 바코드 정보를 뽑아내기 위해서는 이진화 과정을 거쳐야 하는데 이 또한 adaptive 한 방식으로 처리할 수 있다. 바코드 영역은 전경과 배경이 매우 균일하게 섞여 있으므로 적당한 너비의 스캔라인 구간(moving window)에서 픽셀 평균값을 기준으로 임계값을 정해도 충분하다. 아래의 코드는 일정한 크기의 moving window를 이용해서 바코드를 담고 있는 영상을 스캔라인 별로 이진화를 시킨다. 윈도가 한 픽셀 이동하면 이전 평균값을 빼고, 새로운 픽셀 값을 더해서 윈도 평균을 업데이트한다. 스캔라인 시작 부분에서는 윈도 평균값 정보가 없으므로 이전 스캔라인의 평균값을 사용한다. 이 알고리즘은 이미지를 한 번만 스캔하고도 이진화가 가능해서 연산 비용이 매우 저렴한 알고리즘이다(바코드를 발견한 스캔라인에서 종료시키면 이미지를 다 처리할 필요도 없다). 그리고 윈도 크기를 이미지 폭으로 하더라도 여전히 스캔라인 별로 달라지는 adaptive 방식이다.  처음 몇 개의 스캔라인이 바코드와 겹치는 영역이 아니면 윈도 평균값 계산이 제대로 이루어지지 않으므로 잘못 이진화될 수 있지만 바코드 영역에 들어서면 정상적으로 동작하게 된다. 적용 예를 보면 시작 라인이 (비트맵의 시작 라인은 맨 아래이다) 바코드를 포함하지 않으므로 잘못 이진화가 되는 것을 볼 수 있다. 글씨가 전 영역에 거의 균일하게 인쇄된 이미지의 이진화에도 잘 동작하여 OCR에도 응용할 수 있다.

void MovingAvgThreshold(BYTE *image, int width, int height, int wsz, BYTE *res) {
    if (wsz < 0 || wsz > width) wsz = width / 4; // default window size;
    double sum = 128 * wsz;                   // initial moving window sum = 128 * wsz;
    double sumOld = sum;                      // backup sum of the first wsz pixels in each row;
    for (int y = 0, pos = 0; y < height; y++) {           
        sum = sumOld;                         // reset sum = result of previous row;
        for (int x = 0; x < wsz; x++) {
            int v = image[pos];
            sum += v - sum / wsz;                // update sum;
            res[pos++] = v < (sum / wsz) ? 0: 0xFF;
        }
        sumOld = sum;                            // backup for next line;
        for (int x = wsz; x < width; x++) {
            int v = image[pos];
            sum += v - sum / wsz;                // update sum;
            res[pos++] = v < (sum / wsz) ? 0: 0xFF;			
        }
    }
}

728x90
Posted by helloktk
,

속도 $v$의 총알($m$)을 각각 길이 $L$인 줄에 매달린 물체($M$)와 길이 $L$인 막대($M$) 끝을 향해 발사했다. 총알은 물체와 막대에 박힌 후 함께 운동한다. 두 물체가 올라갈 수 있는 최대 높이가 (수직에 대해서 기울어진 최대각) 더 큰 쪽은? 단, 막대를 지탱하는 회전축에 마찰은 없다.

728x90

'Physics > 역학' 카테고리의 다른 글

줄이 팽팽해질 때 물체의 속력은?  (0) 2020.12.20
얼마의 속도로 당겨야  (0) 2020.12.19
컨베이어 벨트의 모터가 한 일은?  (1) 2020.11.22
추의 속력은?  (0) 2020.11.20
열차의 속도가 더 빠른 경우는?  (1) 2020.11.18
Posted by helloktk
,

일정한 속력 $v$로 움직이는 컨베이어 벨트 위로 질량 $m$인 상자가 떨어진다. 상자를 컨베이어 벨트와 같은 속력으로 움직이게 만드는 동안 컨베이어 벨트의 모터가 한 일에 대한 다음 두 주장 중 옳은 것은?

성소: 컨베이어 벨트와 상자 사이의 마찰($F$)에 의해서 상자가 움직이는데, 상자가 속력 $v$가 되는 동안 움직인 거리가 $v^2-0=2ax=2(F/m) x$에서 $x= mv^2/(2F)$이므로, 한 일은 $W=Fx=mv^2/2$이다.

설현: 떨어진 상자의 속력이 $v$로 되는데 걸리는 시간이 $t=v/a=mv/F$고, 그동안 컨베이어 벨트는 일정한 속력 $v$로 움직이므로 벨트의 이동거리는 $d=vt=mv^2/F$다. 따라서 한 일은 $W=Fd=mv^2$이다.

 

벨트와 같이 움직이는 관찰자는 어떻게 생각할까?

 
 
728x90

'Physics > 역학' 카테고리의 다른 글

얼마의 속도로 당겨야  (0) 2020.12.19
더 높이 올라가는 물체는?  (0) 2020.11.24
추의 속력은?  (0) 2020.11.20
열차의 속도가 더 빠른 경우는?  (1) 2020.11.18
동전이 회전한 각은?  (1) 2020.11.15
Posted by helloktk
,

추의 속력은?

Physics/역학 2020. 11. 20. 09:58

높은 천정에 고정된 5 미터 줄의 반대편 끝에 추를 매달고 그림과 같은 위치에서 낙하시킨다. 줄이 팽팽해지는 직후 추의 속력은(m/s)?

1. $\sqrt {8g}$

2. $\sqrt {10g}$

3. $\frac {3}{5}\sqrt {8g}$

4. $\frac {3}{5}\sqrt {10g}$

더보기

수직 아래로 4m를 내려오는 동안 추는 자유낙하를 한다. 이때 속도는 아래 방향이고 크기는 $v=\sqrt {2g\times 4}=\sqrt {8g}$다. 줄이 팽팽해지면 줄 방향으로는 순간적으로 충격력이 주어지고, 이 때문에 줄 방향 성분은 0이 된다. 줄에 수직인 방향 성분은 충격력이 없으므로 그대로 남아서 $v_\bot=\frac {3}{5}\sqrt {8g}$

Q2: 줄이 팽팽해진 이후 추는 처음 높이까지 다시 올라갈 수 있을까?

728x90

'Physics > 역학' 카테고리의 다른 글

더 높이 올라가는 물체는?  (0) 2020.11.24
컨베이어 벨트의 모터가 한 일은?  (1) 2020.11.22
열차의 속도가 더 빠른 경우는?  (1) 2020.11.18
동전이 회전한 각은?  (1) 2020.11.15
어떤 종류의 물체일까?  (0) 2020.11.14
Posted by helloktk
,

10명의 몸무게가 같은 사람이 지붕이 없는 정지한 열차에 타고 있다. 열차와 레일 사이의 마찰은 무시할 수 있다. 사람들은 열차 위에서 달리기를 하여 뒤쪽으로 뛰어내린다. 각 사람이 뛰어내리는 속도는 열차 위에서 볼 때 $u$로 일정하다.(열차에 대한 상대속도가 일정) 어떤 방식으로 뛰어내려야 열차의 최종 속도가 가장 빠를까?

1. 10명이 동시에 뛰어내린다.

2. 1명씩 차례로 뛰어내린다.

3. 차이 없다.

더보기

풀이: 사람의 질량을 $m$, 열차의 질량을 $M$로 놓고, 한꺼번에 뛰어내리는 직 후 열차의 속도를 $V$라면, 사람의 속도는 $V-u$이다(지상 기준). 운동량이 보존되므로

$$ 0 = MV + Nm(V-u)\quad \rightarrow \quad V = \frac{Nm}{M+Nm}u$$. 

순차적으로 뛰어내리는 경우: 열차에 n명의 사람이 남아 있을 때 속도를 $V_n$이라면($V_N=0$), 한 명이 추가로 뛰어 내려면 열차의 속력은 $V_{n-1}$이고 되고(이때 사람의 속도는 $V_{n-1}-u$(지상 기준)), 이 과정에서 운동량 보존을 적용하면

$$ (M+ nm)V_n = (M + (n-1) m) V_{n-1} + m(V_{n-1}-u)$$

$$ \therefore V_{n-1}=V_n + \frac {m}{M+nm} u$$

따라서 0명이 남았을 때 속도 $V_0$는

$$V_0 = V_N + \frac{m}{M+Nm}u + \frac {m}{M+(N-1) m} u +\cdots+\frac{m}{M+m}u=\sum_{k=1}^{N} \frac{m}{M+ km}u$$

이어서 $V_0 >V$임을 알 수 있다. 

 

구체적인 계산없이 정성적으로 설명할 수 있는가?

 
728x90

'Physics > 역학' 카테고리의 다른 글

컨베이어 벨트의 모터가 한 일은?  (1) 2020.11.22
추의 속력은?  (0) 2020.11.20
동전이 회전한 각은?  (1) 2020.11.15
어떤 종류의 물체일까?  (0) 2020.11.14
사슬을 지탱하는 힘은?  (0) 2020.11.13
Posted by helloktk
,