CHDK Motion Detection

Zwiń
X
 
  • Czas
  • Pokaż
Wyczyść wszystko
new posts
  • Kociałko
    Coś już napisał
    • 2007
    • 98

    #1

    CHDK Motion Detection

    bawię się własnie w wykrywanie ruchu na moim 710IS, po przerobieniu demo skryptu md_demo_v1.bas wykrywa ruch i robi fotki jednakże niestety nie znając dobrze języka nie do końca kumam wszystkie opcje z http://chdk.wikia.com/wiki/UBASIC/Tu...etection_Build
    w parametrach skryptu możemy podać:

    Columns -to jasne-ilość kolumn "cell"

    Rows-to jasne-ilość rzędów "cel"

    Threshold (0-255)-próg? czułość?

    compare Interval (millisecs)-szybkość wykrywania zmian w "celach" ?

    Begin Triggering Delay(secs)-opóźnienie robienia zdjęcia po wykryciu ruchu?

    Detect Timeout (seconds)-to jasne-opóźnienie wykonywania następnych komend uBasic

    pix step(speed/accuracy adj)-szybkość zmiany pikseli?

    reg mode(0-no,1-incl,2-excl)-to jasne-typ "cel" full,wewnątrz,zewnątrz

    measure mode(1-Y,0-U,2-V)
    -czyli YUV-znaczy chyba na co ma reagować Y-jasność obrazu ,a reszta hmm?

    jakby ktoś był kumaty i napisał jakiś opis do tego skryptu,i jak opcje wpływają na wykrycie wolnego i szybkiego ruchu
  • Kociałko
    Coś już napisał
    • 2007
    • 98

    #2
    wyczaiłem jeszcze ,że parametr "z" w skrypcie zlicza od 0 do 10 000 (sek.)
    i jest to czas działania skryptu

    Komentarz

    • Kociałko
      Coś już napisał
      • 2007
      • 98

      #3
      zabawy ciąg dalszy

      print_screen 1

      w skrypcie zapisuje wszystkie komunikaty ekranowe podczas działania skryptu do pliku PR_SCREEN.TXT

      print ">[";a;",";b;"] threshold: ";c

      pokazuje na ekranie ilość kolumn i rzędów oraz Threshold

      o ile nie potrzebujemy możemy wszystkie linie print skasować

      domyślnie skrypt po wykryciu ruchu robi fotki bez końca (przynajmniej u mnie) ,chyba że przerwiemy mu działanie spustem migawki

      przerobiłem skrypt tak aby robił tylko 1 fotkę

      ale jak zdefiniować mu więcej lub dać możliwość wpisania ilośći fotek jeszcze nie rozgryzłem

      Komentarz

      • Kociałko
        Coś już napisał
        • 2007
        • 98

        #4
        CHDK fotografowanie piorunów,błyskawic

        szperając po stronach ze skryptami natknąłem się na ciekawy skrypt przydatny przy fotografowaniu piorunów

        jest to modyfikacja skryptu do wykrywania ruchu

        wersja MX3
        (łatki na firmware aparatu)



        wersja Fingalo



        najnowsza wersja Fingalo obsługuje wykrywanie ruchu (błyskawic),regulację kompresji video oraz możliwość sterowania aparatu z pilota (wykrywa podpięcie aparatu pod USB i zaczyna robić fotki,można prostego pilota samemu sobie zrobić z gniazdka usb przycisku i baterii CR2032-kuknij http://ewavr.nm.ru/chdk/remote.htm )


        plus musimy mieć skrypt (który działa na tych wersjach)
        do wykrywania błyskawic

        http://chdk.wikia.com/wiki/Talk:Samp...n_Detection.3F


        a tu drugi skrypt działający na innej zasadzie dla niektórych typów aparatów http://chdk.wikia.com/wiki/UBASIC/Sc...ng_Photography

        Komentarz

        • Kociałko
          Coś już napisał
          • 2007
          • 98

          #5
          CHDK testowanie skryptów

          jest możliwość testowania skryptów na komputerze

          ściągamy programik
          ubasic_test.exe


          lub UBASIC.EXE

          wersja Fingalo

          nie wszystkie skrypty da się testować,część chodzi z 1 programem część z 2

          programiki NIE ODCZYTUJĄ LINII @default
          ze skryptów

          fingalo mówi,ze być może w przyszłej wersji będzie to działać

          można się ratować do testów definiuąc ręcznie parametr np
          zamiast

          @param a Number of Pics
          @default a 3

          wpisujemy ręcznie
          a=3

          w niektórych wersjach łatki CHDK jest ograniczenie do konfigurowalnych parametrów widocznych na ekranie LCD aparatu - do literki j (niestety)

          jeśli dodamy do skryptu jakiś parametr ,który chcemy regulować w menu skryptu na ekranie LCD z nieobsługiwaną literką to po prostu się nie wyświetli

          więcej info tu
          http://chdk.wikia.com/wiki/UBASIC

          Komentarz

          • Kociałko
            Coś już napisał
            • 2007
            • 98

            #6
            wykrywanie ruchu z definiowalną ilością fotek
            (powinno działać)

            skrypt wyglada teraz tak:

            @title motion shoot count

            @param j Shoot count
            @default j 2

            @param a Columns
            @default a 2

            @param b Rows
            @default b 2

            @param c Threshold (0-255)
            @default c 10

            @param d compare Interval (millisecs)
            @default d 80

            @param e Begin Triggering Delay(secs)
            @default e 0

            @param f Detect Timeout (seconds)
            @default f 0

            @param g pix step(speed/accuracy adj)
            @default g 8

            @param h reg mode(0-no,1-incl,2-excl)
            @default h 0

            @param i measure mode(1-Y,0-U,2-V)
            @default i 1


            if j<1 then j=1
            if a<1 then let a=1
            if b<1 then let b=1
            if c<0 then let c=0
            if g<1 then let g=1
            if f<1 then let f=1

            let f=f*1000
            let e=e*1000

            for z=0 to 10000

            let t=0

            md_detect_motion a, b, i, f, d, c, 1, t, h, 2, 2, a-1, b-1, 0, g, e

            if t>0 then goto "1"
            next z
            end

            :1
            for n=1 to j
            print "Shot", n, "of", j
            shoot
            next n
            end


            działa to z łatką CHDK
            MX3

            i
            Fingalo

            Komentarz

            • Vitez
              zło konieczne
              • 2004
              • 19804

              #7
              Możesz wyjaśnić po co zakładasz kilka wątków na ten sam temat i jaki masz związek z autorem/ami tych "poprawek" ?

              Komentarz

              • Kociałko
                Coś już napisał
                • 2007
                • 98

                #8
                no może lepiej żeby wszystko było w 1 wątku

                jaki mam związek z autorami CHDK?

                w sumie żadnego

                ot modyfikacja jest warta polecenia ,bo sporo rozszerza możliwości aparatów
                po polsku strasznie mało jest informacji na ten temat
                Ostatnio edytowany przez Kociałko; 13159.

                Komentarz

                • Juriko
                  Początki nałogu
                  • 2007
                  • 485

                  #9
                  Ciekawe skrytpy i softy, zaraz sie pobawię.

                  Komentarz

                  • Kociałko
                    Coś już napisał
                    • 2007
                    • 98

                    #10
                    linki

                    kilka linków dla zainteresowanych tematem:

                    http://forums.dpreview.com/forums/re...ssage=25369732

                    http://chdk.wikia.com/wiki/Main_Page





                    http://www.fotografuj.pl/Article/CHD..._Canona/id/106

                    Komentarz

                    • dikamilo

                      #11
                      No tak ale temat o CKDK juz jest na forum i ma się dobrze

                      Komentarz

                      • Kociałko
                        Coś już napisał
                        • 2007
                        • 98

                        #12
                        Intervalometer

                        napisałem taki skrypcik (1 raz w sumie)

                        może da się go uprościć jeszcze,może ma błędy jakieś ale wydaje się ,że działa

                        możemy ustawić :
                        -czas startu robienia fotek
                        w min,10sek i sek

                        -ilość fotek

                        -czas pomiędzy fotkami
                        w min,10sek,sek

                        odliczane czasy są pokazywane w 1 linii

                        skrypt:

                        @title My Intervalometer
                        @param a Start 1st Shot (Mins)
                        @default a 0
                        @param b Start 1st Shot (10th Secs)
                        @default b 1
                        @param c Start 1st Shot (Secs)
                        @default c 0
                        @param d Number of Shots
                        @default d 1
                        @param e Interval (Minutes)
                        @default e 0
                        @param f Interval (10th Seconds)
                        @default f 1
                        @param g Interval (Seconds)
                        @default g 0

                        if a<0 then a=0
                        if b<0 then b=0
                        if c<0 then c=0
                        if d<0 then d=1
                        if e<0 then e=0
                        if f<0 then f=0
                        if g<0 then g=0
                        if d=1 then z=0

                        z=(e*60)+f*10+g
                        n=(a*60)+b*10+c

                        if n>0 then gosub "time"

                        for p=1 to d
                        print "Shot", p, "of", d
                        shoot
                        if p=d then goto "end"
                        sleep z
                        if z>0 then gosub "interval"
                        next p
                        end

                        :interval
                        for r=1 to z
                        x=z-r
                        if z>0 then print "Interval:", x/60; "min", x%60+1; "sec"
                        sleep 1000
                        cls
                        next r
                        return

                        :time
                        for m=0 to n
                        q=n-m
                        if q>0 then print "To start:", q/60; "min", q%60; "sec"
                        sleep 1000
                        cls
                        next m
                        return

                        :end
                        end

                        zapisujemy go z rozszerzeniem *.bas np
                        My_timer.bas i wgrywamy do katalogu CHDK/SCRIPTS na naszej karcie pamięci

                        Komentarz

                        • Kociałko
                          Coś już napisał
                          • 2007
                          • 98

                          #13
                          Motion-detection Parameters

                          pojawił się na Wiki w końcu jakiś ciut większy opis parametrów do skryptu:

                          md_detect_motion a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p

                          md_get_cell_diff (column), (row), x


                          Referring to the 'md_detect_motion' command-parameters in the WIKI article, 'a' and 'b' define the number of rows and columns to split the screen into. (If values less than zero are entered or if total number of cells is greater than 1024, it defaults to 3 x 3.)

                          Parameter 'g' determines if the a grid showing the detected cells is displayed.

                          Parameters 'j,k,l,m' define a sub-area of the screen where motion-detection is restricted-to or excluded-from.

                          Parameter 'i' determines if the region is inclusion/exclusion or do not use regions.

                          You may detect motion based on changes of luminance (Y), blue – luminance (U), red – luminance (V) or individual R, G or B values.

                          Parameter 'c' sets that mode.

                          ( For an example of an image split into it's YUV components, see this WIKI article. )

                          For non-specialised use, luminance (c = 1) will be used.

                          You then need to set a threshold-value (in parameter 'f') for the desired mode that will not result in triggering in 'normal' operation.

                          The motion-detection event may be triggered by quick or slow changes in the screen image, set a suitable value with parameter 'e'.

                          The greatest accuracy of movement-detection results when every pixel is sampled but a faster response (suitable for some applications) may be obtained with a larger pixel-step.

                          Set an appropriate value in parameter 'o'.

                          Set a maximum-time for a motion-detection event to occur with parameter 'd' so that after that time the script-command terminates.



                          Motion-detection Parameters :

                          columns, // input parameter. number of columns to split screen into

                          rows, // input parameter. number of rows to split screen into

                          pixel_measure_mode, // input parameter. // 1 - for Y, // 2 for U, // 3 for V, // 4 for gray, // 5 for R, - // 6 for G, // 7 for B

                          detection_timeout, // input parameter. number of millisecnds to abort detection. detected_cells_count will be 0 for timeout condition

                          measure_interval, // input parameter. number of milliseconds between comparison of two pictures

                          threshold, // input parameter. difference value for which procedure will trigger detection of changes draw_grid, // boolean input parameter. // true(1) to draw grid(detected sectors/cells). // false(0) - to not display grid/detected sectors

                          detected_cells_count, // output parameter. count of cells where pixel values differs enough to trigger motion detection // clipping. allows to exclude some region from mtion detection triggering // or use onli selected area to make motion detection // I'm not sure that following parameters are required but using them anyway

                          clipping_region_mode, // input parameter. // 0 no clipping regions // 1 - for excluding selected region from motion detection // 2 - use this only region to make motion detection clipping_region_column1, // input parameter. clipping_region_row1, // input parameter. // this is top-left corner of clipping region

                          clipping_region_column2, // input parameter. clipping_region_row2, // input parameter. // this is right bottom corner of clipping region)

                          function md_get_cell_diff ( col [in], // column of the cell we are requesting row [in], // row of the cell we are requesting val [out] // value of difference between measurements/comparisons)

                          reserved parameters clipping regions, pixel_measure_mode draw_grid

                          Komentarz

                          • Kociałko
                            Coś już napisał
                            • 2007
                            • 98

                            #14
                            Motion Detection - wykrywanie ruchu

                            oryginalny skrypt działa u mnie tak ,że jak wykryje ruch strzela fotki na okrągło

                            przerobiłem go tak ,że można w nim definiować ile ma zrobić fotek (post w wątku)

                            potem zacząłem kombinować jak zrobić , żeby
                            jeśli wykryje ruch-robił fotkę a potem przechodził znów w tryb wykrywania

                            nie mogłem sobie z tym dać rady aż w końcu znalazłem podobnie działający skrypt i lekko go przerobiłem

                            wygląda tak:

                            @title motion_no_loop

                            @param a Columns
                            @default a 2

                            @param b Rows
                            @default b 2

                            @param c Threshold (0-255)
                            @default c 10

                            @param d compare Interval (millisecs)
                            @default d 80

                            @param e Begin Triggering Delay(secs)
                            @default e 0

                            @param f Detect Timeout (seconds)
                            @default f 0

                            @param g pix step(speed/accuracy adj)
                            @default g 8

                            @param h reg mode(0-no,1-incl,2-excl)
                            @default h 0

                            @param i 1Y,U0,V2,4gray, 5R, 6G, 7B
                            @default i 1

                            if a<1 then let a=1
                            if b<1 then let b=1
                            if c<0 then let c=0
                            if g<1 then let g=1
                            if f<1 then let f=1

                            let f=f*1000
                            let e=e*1000

                            :loop
                            let t=0
                            md_detect_motion a, b, i, f, d, c, 1, t, h, 2, 2, a-1, b-1, 0, g, e

                            if t = 0 then goto "loop"
                            shoot
                            goto "loop"

                            if t<1 then goto "1"
                            shoot

                            :1
                            end

                            Komentarz

                            • Juriko
                              Początki nałogu
                              • 2007
                              • 485

                              #15
                              Coś nie działa ten skrypt. "Tradycyjnie" po wykryciu ruchu, strzela fotki bez opamiętania.

                              Komentarz

                              Pracuję...