User Tools

Site Tools


dydaktyka:cprog:2015:photoshop

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dydaktyka:cprog:2015:photoshop [2015/11/24 17:05]
pkleczek [Architektura programu]
— (current)
Line 1: Line 1:
-====== Projekt - Fotoszop ====== 
- 
-[size=10]Nazwałem ten projekt "​Fotoszop"​ oczywiście ze względu na prawną ochronę nazwy handlowej programu Photoshop firmy Adobe...[/​size] 
- 
-===== Tytułem wstępu... ===== 
- 
-Pierwsze komputery powstały nie jako teoretyczne zabawki, tylko jako odpowiedź na bardzo konkretne problemy: 
-  * Jak sprawnie wykonywać rachunki? 
-  * Pod jakim kątem wystrzelić torpedę, aby trafić poruszający się okręt? 
-  * Jak złamać szyfr wroga? 
- 
-Wychodząc z podobnego założenia chciałbym, umożliwić Ci w ramach przedmiotu "​Programowanie komputerów"​ poćwiczyć pisanie programów służących czemuś bardziej praktycznemu niż wypisywanie ''"​Hello world!"''​ na ekran. 
- 
-===== Idea projektu ===== 
- 
-Program powstały w ramach projektu //​Fotoszop//,​ jak nazwa sugeruje, będzie służył do pracy z obrazami. W ramach kolejnych ćwiczeń laboratoryjnych zaimplementujesz((zobacz znaczenie w [[http://​sjp.pwn.pl/​poradnia/​haslo/​implementowac;​9044.html|SJP PWN]])) fragmenty kodu służące do wczytywania/​zapisu danych obrazu oraz do operowania na pikselach. Umożliwi Ci to wykonywanie takch operacji jak: rozmycie (zmniejszenie ostrości) obrazu, znajdowanie krawędzi na obrazie, tworzenie fraktali -- i co Ci jeszcze przyjdzie do głowy :-) 
- 
-Podczas realizacji projektu zapoznasz się z różnymi problemami, które występują podczas pisania programu z prawdziwego zdarzenia. \\ 
-Będziesz pracować z rodzajem "​dokumentacji",​ zawierającej wskazówki i wytyczne odnośnie wymaganej funkcjonalności. 
- 
-Projekt będzie tworzony zgodnie z regułą [[https://​pl.wikipedia.org/​wiki/​KISS_%28regu%C5%82a%29|KISS]],​ stąd: 
-  * program będzie obsługiwał tylko obrazy w odcieniach szarości w 8-bitowej [[https://​pl.wikipedia.org/​wiki/​G%C5%82%C4%99bia_koloru|głębi koloru]], zapisane w formacie [[https://​pl.wikipedia.org/​wiki/​Windows_Bitmap|BMP]] 
-  * pewna część funkcjonalności programu -- wymagająca wiedzy wykraczającej poza ramy przedmiotu -- zostanie dostarczona (przez prowadzącego) 
- 
-Ograniczenie "​obrazy w odcieniach szarości w 8-bitowej głębi koloru"​ pozwala na znaczne uproszczenie zadań -- dzięki temu obraz może być reprezentowany jako dwuwymiarowa tablica wartości z zakresu $[0,255]$. Wartości przykładowych kolorów ze skali szarości: \\ 
-{{:​dydaktyka:​cprog:​2015:​grayscale.png?​nolink|}} 
-===== Architektura programu ===== 
- 
-==== Biblioteka "​bmplib"​ ==== 
- 
-Program korzysta z osobnej biblioteki służącej do odczytu i zapisu danych z pliku bitmapy((Autorem oryginalnego kodu biblioteki jest Michael Sweet. Kod ten można znaleźć na stronie [[http://​paulbourke.net/​dataformats/​bmp/​]])). W zależności od laboratorium biblioteka ta zawiera również pewne dodatkowe funkcje (np. służące do tworzenia nowego obrazu wewnątrz programu). 
- 
-Aby móc używać tejże biblioteki, na początku kodu programu znajduje się linia: 
-<code c> 
-#include "​bitmap.h"​ 
-</​code>​ 
- 
-Pliki bitmap, na których operuje program, powinny znajdować się w katalogu ''​imgs''​. \\ 
-Aby załadować inny obraz niż domyślny (''​lena.bmp''​) zmień odpowiednio pierwszy argument funkcji ''​load_bitmap()''​. \\ 
-Podobnie aby zapisać przetworzony obraz do innego pliku niż domyślny (''​lena-out.bmp''​) zmień odpowiednio pierwszy argument funkcji ''​save_bitmap()''​. 
- 
-==== Typ "​byte"​ ==== 
- 
-Ponieważ zgodnie z ograniczeniami wartość piksela zawiera się w przedziale $[0,255]$, do jego reprezentacji wystarczy jeden bajt -- można użyć więc typu ''​unsigned char''​. 
- 
-Aby jednak intencja programisty była jasna -- że chodzi o piksel -- został zdefiniowany typ ''​byte''​ jako alias dla ''​unsigned char''​. Oznacza to, że zamiast pisać w każdym miejscu ''​unsigned char'',​ można po prostu napisać ''​byte'',​ natomiast dla kompilatora oznacza to dokładnie to samo (1-bajtowa liczba całkowita bez znaku). 
- 
-Alias utworzono z użyciem instrukcji 
-<code c> 
-typedef unsigned char byte; 
-</​code>​ 
- 
-===== Ćwiczenia ===== 
- 
-  - [[dydaktyka:​cprog:​2015:​photoshop:​exercises:​filtering|Filtracja – Rozmycie obrazu]] 
-  - [[dydaktyka:​cprog:​2015:​photoshop:​exercises:​data_un_packing|Umieszczanie bajtów obrazu w tablicy]] 
-  - [[dydaktyka:​cprog:​2015:​photoshop:​exercises:​dynamic_image_allocation|Dynamiczna alokacja tablicy-obrazu]] 
- 
- 
  
dydaktyka/cprog/2015/photoshop.1448381143.txt.gz · Last modified: 2020/03/25 11:46 (external edit)