Skip to content

gosiula/MoodScanAnalyzer

Repository files navigation

🔎📊 MoodScanAnalyzer — Emotion Analysis & Video Segment Verification

MoodScanAnalyzer is a desktop app that analyzes emotion logs collected while viewers watched a video (from the MoodScan app) and checks whether the recorded emotions match what the video was intended to evoke (e.g., a joke at 3–5 seconds → the viewer should smile/laugh).

This can be useful for content evaluation and for measuring the emotional impact of advertising campaigns.

Research System

This project is part of a two-app research system:

  • MoodScan — collects emotion data while a user watches a video
  • 🔎 MoodScanAnalyzer — analyzes whether the expected emotions were met (per scene and overall)

➡️ MoodScan repository: https://github.com/gosiula/MoodScan


✨ Key Features

  • 📈 Visualizes viewer emotions over time on an interactive chart
  • 👥 Compares multiple users (with selection limits for readability)
  • 🎭 Displays expected emotion segments (assumptions) over the timeline
  • ✅ Calculates overall effectiveness (how often assumptions were met)
  • 🎬 Calculates per-scene / per-segment effectiveness while the video plays (dynamic segment accuracy)
  • 🧾 Loads video metadata and expected emotions from VideoLabels.csv
  • 🔍 Works directly on CSV logs generated by MoodScan

🧠 Supported Emotions (Fixed Set)

MoodScanAnalyzer assumes the same fixed set of 7 emotion labels used by MoodScan:

  • 😀 happy
  • 😢 sad
  • 😡 angry
  • 😮 surprised
  • 😕 confused
  • 😐 neutral
  • 😨 scared

Only these values should be used in VideoLabels.csv.


🗂️ Required Project Setup

1) Create the Video folder NEXT TO the project folder

Your folder layout must look like this:

Desktop/
├─ MoodScan/           <-- your cloned repo (the project)
└─ Video/              <-- separate folder next to the project
   ├─ VideoLabels.csv
   └─ Video/
      └─ video.mp4

So the video file path will be: Desktop/Video/Video/wideo.mp4

And the CSV file path will be: Desktop/Video/VideoLabels.csv

2) Add user subfolders in the Users folder INSIDE the project

Inside the MoodScanAnalyzer project directory, in the Users/ folder, add user subfolders like:

MoodScanAnalyzer/
└─ Users/
   ├─ User1/
   │  └─ <log>.csv
   ├─ User2/
   │  └─ <log>.csv
   └─ User3/
      └─ <log>.csv

Each UserX folder must contain a CSV file generated by MoodScan (the emotion log exported while watching the video).

✅ You can add as many users as you want (User4, User5, …).

✅ One CSV per user folder is expected (the app reads the first *.csv it finds).

✅ Make sure that in Visual Studio each user CSV file has Build Action = Content and Copy to Output Directory = Copy if newer so it gets copied to the app’s output folder.

A sample user log is already included in Users/User1.

🧾 VideoLabels.csv Format

Create this file: Desktop/Video/VideoLabels.csv

Use semicolon (;) as the separator.

Required headers: VideoFilePath;PredictedEmotions;Length

Example row: Video/video.mp4;happy(31.00-40.00), surprised(31.00-40.00), happy(50.00-75.00);179,44

Field Explanation

VideoFilePath

Relative path from the outer Video/ folder, e.g.:

  • Video/video.mp4

PredictedEmotions

A comma-separated list of expectations in the form: emotion(start-end)

Example:

  • happy(31.00-40.00)

✅ If two or more emotions share the same time range, it means any one of them is acceptable for that segment
(e.g., happy(31.00-40.00), surprised(31.00-40.00) → showing either emotion satisfies the assumption).

Length

Video duration in seconds, e.g. 179,44.


▶️ How to Run

1️⃣ Requirements

  • 🪟 Windows
  • 🧠 Visual Studio (recommended)
  • ⚙️ .NET (the version used by your solution)

2️⃣ Setup

  1. Clone the repository
  2. Create the required folder structure:
    • Desktop/Video/VideoLabels.csv
    • Desktop/Video/Video/<your_video>.mp4
  3. Add user logs generated by MoodScan:
    • MoodScanAnalyzer/Users/User1/<log>.csv
    • MoodScanAnalyzer/Users/User2/<log>.csv
    • etc.
  4. Open the solution in Visual Studio
  5. Run the project

🎭 Data Interpretation

MoodScanAnalyzer compares expected emotion segments (from VideoLabels.csv) vs. actual user emotions over time (from MoodScan logs). It then computes overall match score for the video and per-segment match score (scene-by-scene).

To collects the emotion logs, use:

➡️ MoodScan: https://github.com/gosiula/MoodScan


📄 License

Copyright (c) 2026 Małgorzata Skowron. All rights reserved.

Permission is granted to use, copy, modify, and distribute this software for noncommercial purposes only, provided that this notice is included in all copies.

Commercial use is not permitted without prior written permission from the author. For commercial licensing, please contact the author.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages