Code Monkey home page Code Monkey logo

apo-photoshop's Introduction

WSISIZ APO: Photoshop

Temat projektu:

Program półautomatycznej konwersji sekwencji obrazów w odcieniach szarości na sekwencję obrazów kolorowych.

Wykorzystanie wygenerowanych sekwencji obrazów:
 a) własnych
 b) istniejących

Koła, trójkąty, kwadraty, intensywność szarości na intensywność jasności w HSV.

Jak uruchomić aplikację?

Z użyciem przeglądarki

  1. Ściągamy projekt na dysk komputera https://github.com/piecioshka/apo-photoshop/archive/master.zip.
  2. Rozpakowujemy paczkę z projektem apo-photoshop.
  3. Pobieramy (paczkę zip) node-webkit ze strony https://github.com/rogerwang/node-webkit#downloads na nasz system operacyjny.
  4. Rozpakowujemy paczkę z projektem node-webkit.
  5. Kopiujemy zawartość projektu apo-photoshop to katalogu który powstał po rozpakowaniu node-webkit.
  6. Uruchamiamy plik nw.exe (Windows) lub nw (Linux) lub node-webkit.app (Mac).

Z użyciem konsoli (dla programistów)

~/ $ git clone https://github.com/piecioshka/apo-photoshop.git
~/ $ cd apo-photoshop
~/apo-photoshop/ $ npm install
~/apo-photoshop/ $ npm start

Bądź też można wygenerować paczkę na wszystkie platformy:

~/apo-photoshop/ $ gulp build

Wykorzystywane narzędzia

Silnik

Obróbka obrazów

Inne pomocne narzędzia

Wszystkie wykorzystywane narzędzia są darmowe.

Lista zadań

Zadanie zlecone przez prowadzącego:

  • Ćw. 1
    • Zadanie 1
      • Wyświetlanie histogramu
      • Metoda średnich
      • Metoda losowa
      • Metoda sąsiedztwa
      • Dodatkowo wymyślić jeden swój sposób
  • Ćw. 2
    • Zadanie 1
      • Operacja odwrotności (negacji)
      • Operacja progowania (binaryzacji)
      • Operacja redukcji poziomów szarości
      • Operacja rozciągania
      • Regulacja jasnością
      • Regulacja kontrastem
      • Regulacja korekcją gamma
    • Zadanie 2
      • Uniwersalna operacja punktowa jednoargumentowa (oparta na tablicy LUT z możliwością zadawania parametrów w sposób interakcyjny (np. poprzez modyfikację postaci graficznej Uniwersalnego Operatora Punktowego)).
    • Zadanie 3
      • Typowe operacje punktowe dwu i wieloargumentowe (arytmetyczne (ADD, SUB, MUL) i logiczne (OR, AND, XOR)).
  • [-] Ćw. 3
    • Zadanie 1
      • a)
        • Operacje wygładzania liniowego oparte na 4 typowych maskach wygładzania.
        • Operacje wyostrzania liniowego oparte na 4 maskach laplasjanowych.
        • Detekcja krawędzi oparta na 3 maskach detekcji krawędzi.
      • b)
        • Uniwersalna operacja liniowa (wygładzanie i wyostrzanie oparte na masce 3x3 o wartościach zadawanych w sposób interakcyjny).
          Uwaga: zastosować opcjonalnie znane metody operacji na skrajnych wierszach i kolumnach obrazu oraz 3 metody skalowania (w przypadku operacji wyostrzania).
    • Zadanie 2
      • Uniwersalna operacja medianowa (otoczenie 3x3, 3x5, 5x5, 7x7 itd.).
        Uwaga: zastosować opcjonalnie znane metody operacji na skrajnych wierszach i kolumnach obrazu.
    • Zadanie 3
      • Uniwersalna operacja logiczna wygładzania (kierunek 0, 1, 2, 3 ).
        Uwaga: zastosować opcjonalnie wybrane metody operacji na skrajnych wierszach i kolumnach obrazu.
    • Zadanie 4
      • Operacje wyostrzania gradientowego (2 maski uniwersalne, 2 maski Robertsa, 2 maski Sobela).
        Uwaga: zastosować opcjonalnie wybrane metody operacji na skrajnych wierszach i kolumnach obrazu oraz 3 metody skalowania.
  • [-] Ćw. 4
    • Zadanie 1
      • Operacja liniowa sąsiedztwa oparta na masce 5x5 utworzonej na podstawie dwóch masek 3x3 użytych w dwuetapowej (1-szy etap – wygładzanie, 2-gi etap – wyostrzanie) operacji filtracji.
        Opracowaną aplikację przetestować na wybranych obrazach i porównać wyniki otrzymane przy użyciu maski 5x5 z wynikami uzyskanymi przy użyciu kolejno dwóch masek 3x3.
        Uwaga: zastosować opcjonalnie 5 znanych z wykładu metod operacji na skrajnych wierszach i kolumnach obrazu oraz 3 znane metody skalowania (proporcjonalna, trójwartościowa, obcinająca).
    • Zadanie 2
      • Korzystając z podanego na wykładzie algorytmu ścieniania zrealizować program przekształcający utworzony obiekt, np. literę (lub 2 litery – np. inicjały wykonawcy) w szkielet (szkielety).
    • Zadanie 3
      • Operacje erozji, dylatacji, otwarcia, zamknięcia dla dwóch przypadków elementu strukturalnego:
        • a) romb (cztero-sąsiedztwo)
        • b) kwadrat (ośmio-sąsiedztwo)
  • [-] Ćw. 5
    • Zadanie 1
      • Segmentacja obrazów z wykorzystaniem: progowania, rozrostu obszaru, dołączania, podziału, podziału i dołączania - algorytm i aplikacja.
    • Zadanie 2
      • Segmentacja oparta na opisie tekstury;
        • a) obliczanie deskryptorów tekstury (texture descriptors),
        • b) obliczanie histogramów różnic poziomów jasności (histograms of gray-level differences),
        • c) obliczanie ciągów pikseli o takiej samej wartości (run length statistics) - algorytm i aplikacja.
    • Zadanie 3
      • Segmentacja oparta na opisie tekstury;
        • a) obliczanie wartości prawdopodobieństwa pojawienia się pary piksli o zadanych poziomach jasności w odległości d jeden od drugiego (obliczanie macierzy współwystąpień (co-occurence matrix calculation)),
        • b) wyznaczenie rozkładu widma potęgowego (power spectrum) - algorytm i aplikacja.
    • Zadanie 4
      • Opis obrazu z wykorzystaniem algorytmu żółwia.

Zadania zlecone przez developerów:

  • Skróty klawiaturowe.
  • Słowniki tłumaczeń.
  • Drag & drop na oknach.
  • Duplikacja aktywnego okna.
  • Przywróć obrazek do pierwotnego stanu.
  • Zamknięcie programu.
  • Aktywacja właściwych elementów w menu kiedy aktywne jest odpowiednie okno.
  • Konwertuj otwierane kolorowe obrazy do postaci obrazu w odcieniach szarości.
  • Przesuwać oknem klikając w tytuł okna.

Uwagi zgłoszone na ostatnich zajęciach:

  • Histogram obok obrazka.
  • Aktualizacja histogramu, kiedy uruchamiamy jakąś operację.
  • Filtracja liniowa - na sztywno elementy, aby przesuwanie okna z opcjami po za okno programu nie łamało.
  • Duplikacja aktualnej wersji obrazka (po ewentualnych modyfikacjach).
  • Histogram tylko dla ostatniego obrazka.
  • Operacje tylko dla ostatniego obrazka.
  • Zamknięcie otwartych okien z opcjami kiedy zamkniemy obraz na którym te operacje są uruchamiane.
  • Zapisanie obrazu (zapytać przy zamknięciu zmodyfikowanego obrazka).
  • Po najechaniu na histogram, prezentować pod nim: nr kanały szarości i ilość wystąpień (oraz dodać paletę kolorów).
  • Lista kanałów szarości do modyfikacji (UOP).
  • Wybieranie operacji arytmetycznych oraz logicznych na podstawie otwartych okien, a nie wybrania kilku obrazów.
  • Wygładzanie: maska 1 (źle).
  • Do zaliczenia (ptak morf, i ptak morf bin):
    • Z ćw. 4 - zadania (morfologiczne).
    • Z ćw. 5 - algorytm żółwia.
  • Pomoc na Windowsie nie działa.

Uwagi zgłoszone na dodatkowych zajęciach:

  • Do ćwiczeń

    • Dodać słowo 'Kopia' do nazwy obrazka gdy go duplikujemy.
    • Button zamknij wszystko okna.
    • Operacje morfologiczne bez limitu wykonania.
    • Skrót do zwiększania/zmniejszania wartości.
    • Filtracja liniowa: Metoda trójwartościowa - źle działa.
    • Filtracja liniowa: Filtracja dolnoprzepustowa - bez tej prawej kolumny.
  • Do projektu

    • Kolorować w nowym oknie, aby nie modyfikować oryginału.
    • Wysegmentować jakąś postać z dowolnego obrazka
    • Dorobić jeszcze z 2 sekwencje, bardziej rozbudowane (więcej obiektów).

Problemy znalezione podczas testów:

  • Problem z szerokimi obrazkami w filtracji liniowej (analizuje tylko kwadrat).
  • Przywrócenie do pierwotnego stanu nowo stworzonego okna (Operacje Arytmetyczne i Logiczne).
  • Aktualizacja tytułu okienka dopiero po załadowaniu obrazka (problem z długimi nazwami plików).
  • Rozszerzamy operacje morfologiczne dla MS Windows.
  • Kolorowanie jako operacja.
  • Algorytm Żółwia: wybór koloru który będzie użyty do zaznaczenia granicy obiektu.

Zadania potrzebne do zrealizowania projektu grupowego:

  • Wczytanie sekwencji obrazów.
  • Rozpoznanie obiektów z pierwszego kadru wykorzystując Progowanie przedziałami. Wytniemy obrazek w zadanym odcieniu szarości.
  • Prezentacja wyodrębnionych obiektów w osobnym oknie.
  • Dobór kolorów z palety HSV dla każdego obiektu.
  • Algorytm iteracyjny: Zastosowanie nowego koloru do wyodrębionego obiektu.
  • Po zakończeniu nakładania koloru pokazujemy w nowym oknie wynik pokolorowanej sekwencji obrazów.

Uwagi z egzaminu

  • Dodać prowadzący i APO do pomocy.
  • Dodać liczbę ile jest obrazków otwartych na projekcie (w belce otwartego okna).
  • Zmienić nazwę w menu "Wybór obiektów na obrazie"
  • Dodać paletę kolorów HSV (Skorzystać z systemowego).
  • Labelki przycisków w sekwencji poklatkowej przenieść do Locali i spolszczyć.

Bonusy

  • Resize okna (Duży obrazek w małym oknie programu).
  • Kiedy otworzymy obrazek, który nie będzie się mieścił z powodu kaskadowości, ustawiamy go w pkt (0, 0).
  • Wyeliminować mruganie w pkt (0, 0) kiedy pokazuje się nowe okno.
  • Edycja pokolorowanej sekwencji.
  • Regulacja progów, regulacja kolorów.

Przydatne materiały

apo-photoshop's People

Contributors

imgbotapp avatar piecioshka avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.