Val av spåk för bildsorteringsprogram

Trädvy Permalänk
Medlem
Registrerad
Aug 2012

Val av spåk för bildsorteringsprogram

Bakgrund: Jag har ett större antal mikroskopbilder (500-1000 st). Varje bild indexeras med tre variabler (Sort, position och förstoring).

Enligt följande :
A-P1-50, A-P1-100 osv.
A-P2-50, A-P2-100 osv.
B-P1-50, B-P2-100 osv.

Jag behöver jämför olika bilder med varandra.
Exempel: A-P1-50x jämförs med B-P1-50x nästa gång jämförs A-P1-50 med C-P3-50

Idag behöver jag sitta och bläddra i mappar fram och tillbaka, Öppna bilder och släcka ner.

Programmet ska kunna visa bilder utefter valda variabler.
Exempel: Visa alla bilder från A och 100x från position 1 och 3.

Jag är nybörjare på programmering men kan tänka mig lägga lite tid för att få detta att funka. Misstänker att jag behöver någon form av databas för bilderna. Kan tänka mig att lägga in bilderna manuellt om det förenklar processen.

Min fråga är vilket programmeringsspråk som är lämpligt för att gör detta?

Det skadar inte om man kan få knappar och klicka på och att bilderna öppnas i själva programmet och inte i egna fönster.

Trädvy Permalänk
Medlem
Plats
Zion
Registrerad
Apr 2004

Du menar jämföra innehåller i bilden, dvs en analys och jämförelse av motiv?

[ i5-6600K @ 4.7Ghz || Corsair H110 GTX || 16GB DDR4 || ASUS Z170 Pro Gaming || Asus ROG 1080 Strix @ 2100+/11Ghz+ ]
Unigine Superposition 1080p; 17487 @ Medium; 4594 @ Extreme
"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2004

Du har nog större kval att stå inför än att välja programmeringsspråk. Det du ser framför dig är inte ett första programmeringsprojekt. Du har ett halvårs heltidsjobb med detta, med hänsyn till din frågeställning.

Med det sagt, i stort sett vilket språk som helst skulle fungera. Webbapplikation, mobilapp eller desktopsystem? För att kunna ge ett bättre svar får du även beskriva hur din process ser ut idag. Du bläddrar fram och tillbaka i mappar och jämför bilder. Det säger mig inte mycket. Vad gör du med resultatet? På vilka kriterier jämför du bilderna? Ska programmet även automatiskt jämföra bilderna och dra slutsatser baserat på det grafiska innehållet? Lägg i så fall till ett år till min approximation.

Huruvida du behöver en databas eller ej beror på vad du vill göra med informationen. Det är nog onödigt tidigt att fundera över det i nuläget.

Trädvy Permalänk
Medlem
Plats
Finspång
Registrerad
Jul 2010

Man skulle kunna stapla alla bilderna som olika lager i t.ex. en photoshop fil och därefter skriva ett makro som hoppar mellan lagren efter valda kriterier...

Trädvy Permalänk
Medlem
Plats
Zion
Registrerad
Apr 2004

Ah nu ser jag, du vill söka på dem baserat på filnamnet?
Det går att sortera i scripting men varför inte bara använda windows search, filtrera ut, markera de du vill, skapa en mapp med rätt namn och sedan cut and paste?

[ i5-6600K @ 4.7Ghz || Corsair H110 GTX || 16GB DDR4 || ASUS Z170 Pro Gaming || Asus ROG 1080 Strix @ 2100+/11Ghz+ ]
Unigine Superposition 1080p; 17487 @ Medium; 4594 @ Extreme
"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Trädvy Permalänk
Medlem
Registrerad
Aug 2012
Skrivet av johey:

Du har nog större kval att stå inför än att välja programmeringsspråk. Det du ser framför dig är inte ett första programmeringsprojekt. Du har ett halvårs heltidsjobb med detta, med hänsyn till din frågeställning.

Med det sagt, i stort sett vilket språk som helst skulle fungera. Webbapplikation, mobilapp eller desktopsystem? För att kunna ge ett bättre svar får du även beskriva hur din process ser ut idag. Du bläddrar fram och tillbaka i mappar och jämför bilder. Det säger mig inte mycket. Vad gör du med resultatet? På vilka kriterier jämför du bilderna? Ska programmet även automatiskt jämföra bilderna och dra slutsatser baserat på det grafiska innehållet? Lägg i så fall till ett år till min approximation.

Huruvida du behöver en databas eller ej beror på vad du vill göra med informationen. Det är nog onödigt tidigt att fundera över det i nuläget.

Jag försöker förtydliga.
Programmet ska enbart visa bilder. Själva analysen görs manuellt genom att titta på två-fyra bilder samtidigt.

Syftet med programmet är alltså enbart att visa de bilder som uppfyller de valda kraven. Till exempel alla bilder med 50x förstoring och från position 2.

Exempel: programmet visar 2 bilder för att de har en sak gemensamt, exempelvis samma position men olika förstoring.

Filerna hålls isär genom unika filnamn. Jag tar bara en bild på prov a vid position 1 och förstoring 50x. Detta prov får då namnet A-P1-50. Filerna döper jag manuellt via mikroskopprogrammet.

Min amatörmässiga gissning är att bästa sättet är att göra en databas där varje bild får ett unikt namn och sedan koppla värden (position, förstoring och sort) till varje bild/fil. Sen kan ett program hämta de bilder som överensstämmer med ett eller flera värden. Alltså sortera ut de två-fyra bilder som jag vill titta på för tillfället.

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2004

Ok, då krympte problematiken något.

Om all data som behövs för att fatta beslut ligger i filnamnen tycker jag inte du ska använda någon databas. Att blanda in en databas innebär "dubbel bokföring". Filnamnen i sig ska stämma överens med datat i databasen. Vad händer om du tar bort en fil eller döper om den? Databasen kommer då ha fel data och programmet kommer bete sig felaktigt.

Sålänge det rör sig om ett övergripligt antal bilder, säg max 10000, tycker jag nog du klarar dig gott med att låta programmet springa runt och rota på disken. Att lägga bilderna på en SSD hjälper upp prestandan.

Vi är alla olika, men själv brukar jag scripta ihop enkla kommandoradsbaserade verktyg för sådana här saker. Jag vet inte vilket operativsystem du kör, men jag skulle tycka att bash är ett lämpligt språk för detta. Bash i sig är ett scriptspråk som vanligtvis medföljer GNU/Linuxinstallationer och MacOS X, men finns även för Windows. Till detta behövs hjälpprogram, exempelvis GNU binutils eller motsvarande.

Många med mig själv skulle dock hävda att bash inte lämpar sig för mer komplicerad programutveckling än vad som överskrider en handfull rader kod. Går det över styr kan python vara ett bra alternativ. Lite högre tröskel att ta sig över, men ett kraftigare verktyg och sannolikt mer portabelt.

För att ge exempel på hur du med en enda rad bash-kod kan ta fram alla bilder med förstoring 50 och visa med bildvisaren feh:

for picture in $(find . -name "*-50"); do feh "$picture" &; done

Eller motsvarande för alla med -P1- i namnet:

for picture in $(find . -name "*-P1-*"); do feh "$picture" &; done

Dessa två småexempel visar bara hur snabbt och enkelt man kan uttrycka sin vilja i bash-kod. Har du en kommandoterminal och bash kan du skriva in raden direkt i terminalen och få resultat direkt. Notera att ovanstående rader går igenom underkataloger också, tack vare kraften i verktyget find. Vill du använda en annan bildvisare än feh byter du ut till motsvarande kommando.

Trädvy Permalänk
Medlem
Registrerad
Aug 2012

@johey: Kanon! Det var exakt det jag letade efter! Tack.

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Maj 2004

+1 för Python om du vill göra det lite mer komplicerat eller skapa ett grafiskt användargränssnitt. Python har gott om bibliotek, och kan också användas i en kommandotolk.