Praca inżynierska - projekt aplikacji w Matlab

0

Cześć,

Piszę pracę inżynierksą o wykrywaniu burz za pomocą nagrań z kamery wizyjnej. Potrzebuję pomocy w zrobieniu kodu w Matlabie, który będzie pełnił następujące funkcje:

  • wgrywanie nagrania oraz wykrycie na nim wyładowania/pioruna zarówno z obrazu jak i samego dźwięku wyładowania;

  • gdy nastapi wykrycie pierwszego wyładowania, ma nastąpić odliczanie w sekundach od 0 aż do następnego wyładowania;

  • gdy nastąpi kolejne wyładowanie, odliczanie ma zostać zatrzymane, a następnie program ma napisać ile czasu trwał okres między mierzonymi wyładowaniami, a następnie znowu odliczać od 0 do następnego wyładowania;

Czas między wyładowaniami będzie okreslał odległość burzy od stanowisko, zakładając, że prędkość rochodzenia się dźwięku w powietrzu to ok. 340m/s

Na ten moment udało mi się napisać coś takiego, lecz nadal program nie działa jak należy:

% Wczytywanie nagrania video
videoFile = 'burza_x.mp4';

videoObj  = VideoReader(videoFile);

% Wczytanie dźwięku z nagrania
[soundData, fs] = audioread(videoFile);

% Wczytanie parametrów detekcji pioruna/wyładowania
threshold = 0.1; % Próg progowania dla kanału niebieskiego
frameInterval = 10; % Minimalna liczba klatek między kolejnymi wyładowaniami

% Licznik czasu do kolejnego wyładowania
timeToNextLighting = 0;

% Odtworzenie dźwięku
sound(soundData, fs);

% Odtwarzanie klatek
while hasFrame(videoObj)
    frame = readFrame(videoObj)

    % Wyświetlanie
    %imshow(frame);
    %title(['Analiza nagrania:  ' videoFile]);

    % Analiza klatki do detekcji pioruna
    blueChannel = frame(:, :, 3); % Kanał niebieski
    lightningDetected = any(blueChannel(:) > threshold);

    % Detekcja dźwięku
    soundDetected = any(abs(soundData) > 0.1);

    % Gdy nastąpi wykrycie wyładowania, następuje odliczanie
    if lightningDetected || soundDetected
        disp('Wykryto piorun/wyładowanie');

        % Odliczanie [s]
        for i = timeToNextLighting:1:40
            disp(['Następne wyładowanie: ' num2str(i) ' sekund']);
            pause(1);
        end

        % Zerowanie licznika
        timeToNextLighting = frameInterval;
    end

    % Zmniejszenie licznika czasu
    timeToNextLighting = max(timeToNextLighting - 1, 0);
end

Proszę o pomoc co zmienić, co dodać, co odjąć lub jakiś nowy pomysł na ten program, gdyż nie znam się za bardzo na Matlabie, a to jedyne co udało mi się wymyślić.

Z góry bardzo dziękuję

1

Co to znaczy, program nie działa jak należy?

0

wrzuc ten kod w ChatGPT i zadawaj pytania. Nawet w darmowej wersji jak będziesz sensownie pytał to Cię jakos tam nakieruje. Chyba nie liczysz ze ludzie na forum będą Ci wymyślać i pisać prace inżynierska za darmo

0
RmBarT napisał(a):
    % Detekcja dźwięku
    soundDetected = any(abs(soundData) > 0.1);

Czyli mocniejsze beknięcie/uwolnienie gazów również będzie rejestrować?
Czy to musi być matlab? Jakbyś sobie robił to w pythonie to miałbyś większą grupę osób którą mógłbyś zapytać o pomoc, matlab to lekko mówiąc nisza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1