Projekt ma charakter nawigacyjny.
Autor: Magister inżynier Ireneusz Łukasz Dzitkowski Wałcz, dnia: 08. 02. 2012r.
© Wszystkie prawa zastrzeżone.
Projekt systemu przedstawiony w formie artykułu:
System wspomagający wybór formatu graficznego i moduł poprawy jakości zdjęć o charkaterze nawigacyjnym.
SPIS PUNKTÓW:
Wstęp
-
Cel pracy
-
Koncepcja systemu wspomagającego wybór formatu graficznego
-
Koncepcja modułu poprawy jakości zdjęć
-
Przykładowy program
-
Zastosowanie CLIPS w podejmowaniu decyzji wyboru
Wstęp
Grafika współcześnie jest ogromnym zbiorem zdjęć i formatów,
że problemem jest wybranie najlepszej jakości zdjęcia ze zbioru zdjęć
i grafik umieszczonych w danej bazie.
Gdy analizowanie zajmuje wiele czasu,
a jest mnóstwo możliwości to sprawa się komplikuje.
Ciekawym rozwiązaniem okazuje się zastosowanie
hybrydowych systemów sztucznej inteligencji do wspomagania
wybór formatu graficznego i modułu poprawy jakości zdjęć
przydatnych do uzupełniania witryny i poprawy jakości
zdjęć w albumie. Za pomocą programów sztucznej
inteligencji istnieje możliwość wyboru ilości,
formatu i rodzaju zdjęcia przez przycisk "zaznacz wszystkie" lub dla
wybranego zdjęcia. Jest to istotna operacja,
która umożliwia użytkownikowi komputera na wybranie przy wsparciu
sztucznej inteligencji najbardziej pod względem cech jakościowych
wartościowego i odpowiedniego graficznie zdjęcia.
Program tego typu oferuje dużą różnorodność w zakresie
edytowania i polepszania obrazków w grafice ponieważ
najlepszy sposób wyboru właściwego zdjęcia zależy od listy
zbiorze i jest tak zaprogramowany, aby ułatwić poruszanie
się wśród bogactwa możliwości oraz maksymalnie
ułatwić wybór typu zdjęcia. Wszystkie wybory mogą być dokonywane
przypomocy wygodnego narzędzia przeznaczonego do wyznaczenia dostępu
do wielu typów zdjęć i zintegrowanego z podręcznikiem
elektronicznym) lub przez prosty system hierarchicznego menu.
Wykresy dostępne są też przez makra. Patrz także następny akapit na temat skrótów.
Szybki dostęp do najczęściej stosowanych typów wykresów,
skróty.Najczęściej wykorzystywane typy wykresów są dostępne poprzez
szybkie narzędzia, wymagające tylko "pojedynczego kliknięcia"
(np. Podręczne wykresy statystyczne lub wykresy bloku danych).
Narzędzia te są dostępne w podręcznych menu i zmniejszają
do niezbędnego minimum liczbę potrzebnych analiz.
1. Cel pracy.
Celem pracy jest generalne zaprezentowanie koncepcji systemu i programu
w CLIPS przeznaczonych do wyboru grafiku
ze zbioru i poprawy jakości zdjęć w świetle
hybrydowych systemów expertowych i sztucznej inteligencji potrzebnych
dla zastosowań reklamowych artystycznych oraz profesjonalnych.
Ze strony zastosowań dla informatyki to przede wszystkim
automatyczna analiza za pomocą hybrydowej sztucznej inteligencji,
która przyśpiesza i eliminuje skomplikowane ipotrzebne procesy analityczne
umieszczając je w module programowym.
a) Schemat przedstawiający działanie systemu wspomagającego wybór sztucznych zdjęć.
2. Koncepcja systemu wspomagającego wybór formatu graficznego.
Koncepcja zawiera diagram i model przebiegu procesu zbierania
do określonego zbioru zdjęć i następnie wybór najlepszego
jakościowo zdjęcia na podstawie instrukcji zawartej
w programie CLIPS najlepszego zdjęcia, a dzięki temu poprawy
jakości modułu graficznego.
3. Koncepcja modułu poprawy jakości zdjęć.
Pomysł ten przedstawia za pomocą rysunku blokowego decyzję dotyczącą poprawy jakości i wyboru,
która przebiega w hybrydowym systemie sztucznej inteligencji jaki wykorzystuje
środowisko CLIPS.
a) Porządkowanie wyboru według normy i standardów jakości.
Metoda: http://www.google.pl/imgres?q=Jako%C5%9B%C4%87+zdj%C4%99cia&um=1&hl=pl&tbm=isch&tbnid=ozTzqSo- 5
b) Jakość zdjęć kadrowych.
4. Przykładowy program w CLIPS.
Przykładowymi programami są :
-PhotoViz dostępny na stronie http://www.picsalive.com/download.aspx
-WindowsExec
-CleanerZoomer 40.c
(defrule get-goal
(initial-fact)
=>
(printout t "How many foto do you want? ")
(assert (goal =(read))) ; Read answer and use it as a goal.
(assert (visited 0 0)) ;
)
; rule. (It would be harder to print the moves in forward order.)
(defrule done
(declare (salience 1))
(goal ?x)
(or (visited ?a&:(= ?a ?x) ?b)
(visited ?a ?b&:(= ?b ?x))
)
=> 6
(printout t crlf "Solution found. Moves in reverse order:" crlf crlf)
(assert (print-path ?a ?b)) ; arrange for first move to be printed
)
(defrule solution-printer
(declare (salience 1))
?prev <- (print-path ?a ?b)
(predecessor ?a ?b ?c ?d)
=>
(printout t " Moved from " ?c "," ?d " to " ?a "," ?b crlf)
(retract ?prev)
(assert (print-path ?c ?d)) ; arrange for next move to be printed
)
(defrule solution-printed
(declare (salience 1))
?prev <- (print-path ?a ?b)
(not (predecessor ?a ?b ? ?)) ; The state (?a,?b) has no predecessor.
=>
(printout t crlf "And that was where we started." crlf crlf)
(retract ?prev)
(halt)
)
(deffunction visit (?froma ?fromb ?toa ?tob)
(assert (visited ?toa ?tob))
(assert (predecessor ?toa ?tob ?froma ?fromb))
(printout t "Try advance from " ?froma "," ?fromb " to " ?toa "," ?tob crlf)
)
(defrule empty1 ; empty foto number 1
(visited ?a ?b)
(test (> ?a 0))
(not (visited 0 ?b))
=>
(visit ?a ?b 0 ?b)
)
(defrule empty2 ; empty foto2 number 2
(visited ?a ?b)
(test (> ?b 0))
(not (visited ?a 0))
=>
(visit ?a ?b ?a 0)
)
(defrule fill1 ; fill foto 3 number 1
(visited ?a ?b)
(test (< ?a 3))
(not (visited 3 ?b))
=> 7
(visit ?a ?b 3 ?b)
)
(defrule fill2 ; fill foto 2number 2
select foto 1+foto2+foto3/3
(visited ?a ?b&:(< ?b 5))
(test (< ?b 5))
(not (visited ?a 5))
=>
(visit ?a ?b ?a 5)
)
(defrule pour12-empty1 ; pour from foto1 1 to foto2 till 1 is empty
(visited ?a ?b)
(test (> ?a 0))
(test (<= (+ ?b ?a) 5))
(not (visited 0 =(+ ?b ?a)))
=>
(visit ?a ?b 0 (+ ?a ?b))
)
(defrule pour21-empty2 ; pour from foto 2 to foto 1 till 2 is empty
(visited ?a ?b)
(test (> ?b 0))
(test (<= (+ ?b ?a) 3))
(not (visited =(+ ?b ?a) 0))
=>
(visit ?a ?b (+ ?a ?b) 0)
)
(defrule pour12-fill2 ; pour from foto1 to foto 2 till 1 is full
(visited ?a ?b)
(test (> ?a 0))
(test (> (+ ?b ?a) 5))
(not (visited =(- (+ ?a ?b) 5) 5))
=>
(visit ?a ?b (- (+ ?a ?b) 5) 5)
)
(defrule pour21-fill1 ; pour from foto 2 to foto 1 till 2 is full
(visited ?a ?b)
(test (> ?b 0))
(test (> (+ ?b ?a) 3))
(not (visited 3 =(- (+ ?a ?b) 3)))
=>
(visit ?a ?b 3 (- (+ ?a ?b) 3))
)
(parent foto1, foto2)
(+ 3 2)
(load "buckets.clips")
(family (father foto1) (mother foto2) (child wynik))
(assert (parent foto1))
(retract 17)
(deffacts family-tree
(parent foto1 foto2)
(parent foto 3 foto1)
(parent foto 2 foto3)
(parent foto1, wynik)
)
(set-strategy select wybór)
(defrule <name-of-rule>
<optional-declare>
<conditions>
=>
<actions>
)
(declare (select17))
(defrule grandp
(parent ?x ?y)
(parent ?y ?z)
=>
(assert (grandparent ?x ?z))
)
(values ?a&:(> ?a 0) ?b&:(>= ?b ?a))
(test (>= ?b ?a))
(not (parent ?a ?b))
(or (grandparent tim ?) (grandparent ? tim))
(value (+ ?a ?b))
(value =(+ ?a ?b))
(bind ?x (+ ?a ?b))
(printout t "The sum of " ?a " and " ?b " is " (+ ?a ?b) crlf)
(bind ?x (read))
(deffunction family (?father ?mother ?child)
(assert (foto1 ?foto2 ?wynik))
(assert (foto2 ?foto3 ?wynik))
(assert (foto1 ?foto2 ?foto3))
)
(input $?before foto1 $?after)
(assert (before-foto2 ?before))
(create$ X Y Z...)
(nth$ N L)
(first$ L)
(rest$ L)
(member$ X L)
(subsetp L1 L2)
(explode$ str) 9
$ "I can't do that")
(implode$ L)
(defrule converse
?t <- (talk) ; Fires when there is a (talk) fact.
=>
(retract ?t) ; Get rid of (talk) fact.
(bind ?input-string (readline)) ; Read a line from user.
(bind ?input (explode$ ?input-string)) ; Convert it.
(assert (input ?input)) ; Put input into working memory.
)
remove-break rule-name)
(exit)
5. Zastosowanie CLIPS w podejmowaniu decyzji wyboru.
Rozwiązuje problemy takie bywają nazywane AI-trudnymi i zalicza się do nich między innymi:
• analiza (i synteza) języka naturalnego,
• rozumowanie logiczne,
• dowodzenie twierdzeń,
• gry logiczne
• szachy,
• warcaby,
• go,
• manipulacja wiedzą,
• systemy doradcze,
• diagnostyczne.
W tym przypadku rozwiązał się problem możliwości wyboru
najlepszej fotografii i poprawy jakości zdjęć z wykorzystaniem
modułów sztucznej inteligencji. Program minimalny w CLIPS
to stworzenie algorytmu przejawiającego aspekt inteligencji
rozpoznającego wybrane zdjęcie jako najlepsze zdjęcie.
Bardzo ważna jest koncepcja i opis w zawartym projekcie,
który w miarę możliwośći prezentuje metodę w jaki można
wybrać zdjęcia i przeprowadzić najlepszy wynik w systemie wspomagającym
wybór formatu graficznego i moduł poprawy jakości zdjęć.
http://www.google.pl/imgres?q=modu%C5%82+poprawy+jako%C5%9Bci+zdj%C4%99c&um=1&hl=pl&sa=N&tbm=isch&tbnid=9Z9ZgCuZ3UhbzM:&imgrefurl=http://poradyisztuczki.blogspot.co 11
(deffunction pobierz_ilość zdjęć (?zdjęcie_low ?zdjęcie_high)
(bind ?liczba (read))
(while(or (not (integerp ?liczba))
(< ?liczba ?zdjęcie_low)
(> ?liczba ?zdęcie_high)
)
(format t "%nPodales zla liczbe, sprobuj ponownie <%d,%d>:" ?zdjecie_low ?zdjęcie_high)
(bind ?liczba (read))
)
(printout t crlf)
?liczba
)
(deffunction pobierz_tak_nie ()
(bind ?odp (readline))
(bind ?odp (lowcase ?odp))
(while(and (<> 0 (str-compare ?odp "tak")) (<> 0 (str-compare ?odp "nie")))
(printout t "<tak|nie>: ")
(bind ?odp (readline))
)
(printout t crlf)
?odp
)
(deffunction pobierz_tak_nie_nie-wiem ()
(bind ?odp (readline))
(bind ?odp (lowcase ?odp))
(while(and (<> 0 (str-compare ?odp "tak")) (<> 0 (str-compare ?odp "nie")) (<> 0 (str-compare ?odp "nie wiem")))
(printout t "<tak|nie|nie wiem>: ")
(bind ?odp (readline))
)
(printout t crlf)
?odp
)
(deffunction pobierz_rodzaj()
(bind ?odp (readline))
(bind ?odp (lowcase ?odp))
(while(and (<> 0 (str-compare ?odp "zdjecie 1")) (<> 0 (str-compare ?odp "zdjęcie2 jest najlepsze")))
(printout t "<zdjecie 1|zdjęcie2>: ")
(bind ?odp (readline))
)
(printout t crlf)
?odp
)
(defrule start
(initial-fact)
=>
(printout t "Podaj foto1 : ")
(bind ?a (read))
(printout t "Podaj fot02 : ")
(bind ?b (read))
(printout t "Podaj foto3: ")
(bind ?c (read))
(assert (a ?a)(b ?b)(c ?c)))
(defrule dzialanie-if
(a ?a)(b ?b)(c ?c)
=>
(if (= ?a 0) then (printout t "foto1 jest zero" crlf))
(if (and (= ?foto 0)(=foto?b 0)) then (printout t " i foto2 rowne zero" crlf))
(if (and (= ?a 0)(or (> ?b 1)(< ?c 3))) then (printout t "a =0 i
(b >1 lub c<3)" crlf))
(if (= ?foto2 1) then (printout t "foto1 jest jeden" crlf)
else (printout t "afoto1nie jest jeden" crlf)))CLIPS>
(defrule naglowek
(initial-fact)
=>
(printout t "Program oblicza pierwiastki rownania kwadratowego : "
crlf)
(printout t "foto1*x^2 + b*x + c = 0" crlf crlf)
(printout t "Podaj foto1 : ")
(bind ?a (read))
(printout t "Podaj foto2 : ")
(bind ?b (read))
(printout t "Podaj foto3 : ")
(bind ?c (read))
(assert (foto1?foto2)(bfoto1?foto2)(cfoto3?najlepszefoto)))
(defrule licz-delte
(afoto1?foto2)
(foto2?foto2)
(foto3?foto4)
=>
(bind ?delta (- (* ?foto1 ?foto2)(* 4 ?a ?c)))
(assert (delta ?delta)))
(defrule delta-rowna-zero
(delta ?delta)
(foto ?foto2)
(foto1 ?foto2)
(test (= ?delta 0))
=>
(bind ?x1 (/ (- 0 ?b)(* 2 ?a)))
4
(bind ?x2 ?x1)
(assert (x1 ?x1)(x2 ?x2)))
(defrule pisz-wynik
(x1 ?x1) 13
(x2 ?x2)
=>
(printout t "Rozwiazanie : foto1 = " ?najlepsze1 " foto2 = " ?foto2 crlf))
(retract *)
(printout t "Okresl rodzaj zdjęcia kolor|B-W>: ")
(assert (plec (pobierz_foto)))
)
(defrule zdjęcie _kolor
(plec "kolor")
=>
(assert (jakość"bardzo niskie"))
(printout t "(kolor ma słabszy kontrast niż B-W)" crlf)
(assert (wyniki 1))
)
(defrule foto_B_W
(foto_B-W")
?pid <- (foto?)
=>
(retract ?pid)
(assert (jakość "dobra"))
(printout t "kontrast foto1 <0, 100>: ")
; (assert (foto (pobierz_liccze 0 100)))
(bind ?foto (pobierz_liczbe 0 100))
(assert (foto ?kontrast))
(printout t "Czy foto1 jest najlepsze? <tak|nie|nie wiem>: ")
(assert (miasto (pobierz_tak_nie_nie-wiem)))
(printout t "Podaj foto2, w ktorym wystapila najlepszy kontrast <0, " ?wiek ">: ")
(assert (kontrast (pobierz_liczbe 0 ?wiek))
(printout t "Czy badane zdjęcie jest dobre? <tak|nie>: ")
(bind ?czy-jest najlepsze (pobierz_tak_nie))
(if (= 0 (str-compare ?czy-rodzila "tak"))
then
(printout t "Podaj rodzaj zdjęcia <0, " ?wiek "> : ")
(assert (kontrast_zdjęcia (pobierz_liczbe 0 ?wiek)))
else
(assert (nie-foto "tak"))
)
(end)
(exit)
(stop)
Zakończenie
Zastosowanie hybrydowych metod sztucznej inteligencji
oraz metod statystycznych na potrzeby graficzne i przyśpieszające
procesy analizy w systemie wspomagającym wybór i poprawę jakości
modułu zdjęć przeznaczone jest dla zastosowań informatycznych.
Opracowanie i praktyczna weryfikacja algorytmów umożliwiających
wybór zdjecia według jakości
zwiększa parametrach użytkowe w czasie wyboru grafiki.
Szczegółowa analiza statystyczna za pomocą sztucznej
inteligencji wybranych zdjęć poprawia jakość wykorzystywanych
w prognozowaniu i wybór optymalnych danych,
ich ilości oraz zakresu do każdej metody prognostycznej.
Wykazanie użyteczności wybranych i opracowanych hybrydowych
metod sztucznej inteligencji oraz metod statystycznych
może służyć do rozwiązywania zadań oceny jakości.
Źrodła:
- Mgr inż. Ireneusz Łukasz Dzitkowski
- opracowania własne
- Sztuczna Inteligencja Autor: Szanowny Pan Marek Kasperski, Wydawnictwo „HELION”
- magazyn PC Format 07/2010 r. - Dział software.
- http://sourceforge.net/projects/clipsrules/files/CLIPS/6.24/windows_executables_624.zip/download
- http://math.hws.edu/eck/cs453/s03/about_clips.html
- http://www.sciaga.pl/tekst/69515-70-sztuczna_inteligencja_metody_ekspertowe
Opracował i przygotował: Magister inżynier Ireneusz Łukasz Dzitkowski