Will Johnson
CSE 455, Winter 09
Project 3
February 27, 2009

Content-based image retrieval

The ten required queries

beach_1, with OPP, INT, and spatial information


beach_1
INT = 1.000000

crater_4
INT = 0.492041

beach_5
INT = 0.458939

sunset_2
INT = 0.444212

boat_3
INT = 0.443617

boat_5
INT = 0.385508

sunset2_2
INT = 0.374502

stHelens_3
INT = 0.371120

crater_3
INT = 0.369447

sunset2_3
INT = 0.355798

beach_2
INT = 0.353317

crater_2
INT = 0.351878

boat_2
INT = 0.336921

beach_4
INT = 0.332223

crater_5
INT = 0.329089

beach_3
INT = 0.328434

crater_1
INT = 0.324450

sunset1_5
INT = 0.314977

stHelens_5
INT = 0.314821

stHelens_2
INT = 0.314147

pond_3
INT = 0.295986

stHelens_4
INT = 0.286813

pond_1
INT = 0.271768

boat_4
INT = 0.267747

stHelens_1
INT = 0.243942

sunset2_1
INT = 0.229756

boat_1
INT = 0.228779

pond_2
INT = 0.225260

sunset1_4
INT = 0.198372

sunset2_5
INT = 0.180195

pond_4
INT = 0.175902

pond_5
INT = 0.146058

sunset1_1
INT = 0.145755

cherry_5
INT = 0.137997

sunset1_3
INT = 0.134141

sunset1_2
INT = 0.121715

cherry_1
INT = 0.119796

cherry_2
INT = 0.118853

cherry_4
INT = 0.106503

cherry_3
INT = 0.095804

beach_1, with OPP, INT, but no spatial information


beach_1
INT = 1.000000

boat_3
INT = 0.592376

crater_4
INT = 0.584303

sunset2_2
INT = 0.540827

boat_4
INT = 0.538685

sunset2_4
INT = 0.535094

boat_5
INT = 0.534619

beach_2
INT = 0.508685

beach_4
INT = 0.503984

sunset2_3
INT = 0.499648

beach_3
INT = 0.496693

crater_3
INT = 0.489326

pond_3
INT = 0.488281

crater_5
INT = 0.476247

crater_2
INT = 0.465918

beach_5
INT = 0.460540

pond_1
INT = 0.454049

stHelens_3
INT = 0.453779

boat_2
INT = 0.441351

pond_5
INT = 0.424492

pond_2
INT = 0.413431

stHelens_4
INT = 0.402552

crater_1
INT = 0.386406

pond_4
INT = 0.380280

stHelens_2
INT = 0.365479

boat_1
INT = 0.358158

sunset1_5
INT = 0.346833

sunset2_1
INT = 0.339049

stHelens_5
INT = 0.329092

sunset2_5
INT = 0.328382

sunset1_1
INT = 0.262188

stHelens_1
INT = 0.257454

sunset1_3
INT = 0.245016

sunset1_2
INT = 0.238337

sunset1_4
INT = 0.233770

cherry_2
INT = 0.172036

cherry_1
INT = 0.161624

cherry_5
INT = 0.161182

cherry_3
INT = 0.138781

cherry_4
INT = 0.131768

boat_5, with OPP, INT, and spatial information


boat_5
INT = 1.000000

boat_3
INT = 0.861764

boat_4
INT = 0.707835

boat_2
INT = 0.593857

crater_4
INT = 0.445218

crater_5
INT = 0.406693

sunset2_4
INT = 0.402464

beach_1
INT = 0.385508

beach_2
INT = 0.350023

stHelens_5
INT = 0.349746

sunset1_5
INT = 0.306048

beach_5
INT = 0.299385

sunset2_5
INT = 0.292523

beach_3
INT = 0.282467

cherry_5
INT = 0.274082

stHelens_1
INT = 0.270566

sunset1_3
INT = 0.270410

sunset1_4
INT = 0.266823

crater_2
INT = 0.264215

sunset1_2
INT = 0.261992

crater_3
INT = 0.252376

stHelens_2
INT = 0.246224

beach_4
INT = 0.235003

crater_1
INT = 0.234056

sunset1_1
INT = 0.216992

stHelens_3
INT = 0.209189

pond_3
INT = 0.201217

stHelens_4
INT = 0.198789

cherry_1
INT = 0.183636

pond_1
INT = 0.182376

pond_2
INT = 0.181748

cherry_2
INT = 0.179921

boat_1
INT = 0.175820

pond_5
INT = 0.171364

sunset2_2
INT = 0.153021

cherry_3
INT = 0.137636

sunset2_3
INT = 0.131898

pond_4
INT = 0.131888
sunset2_1

INT = 0.102288

cherry_4
INT = 0.090600

boat_5, with OPP, INT, but no spatial information


boat_5
INT = 1.000000

boat_3
INT = 0.874772

boat_4
INT = 0.757601

boat_2
INT = 0.665599

beach_1
INT = 0.534619

beach_2
INT = 0.513818

crater_4
INT = 0.503346

sunset2_4
INT = 0.479095

crater_5
INT = 0.463669

beach_3
INT = 0.449714

stHelens_5
INT = 0.442767

beach_5
INT = 0.409687

beach_4
INT = 0.405143

sunset1_5
INT = 0.378327

crater_3
INT = 0.369277

sunset2_5
INT = 0.363105

stHelens_1
INT = 0.337008

stHelens_2
INT = 0.330882

pond_5
INT = 0.326247

crater_1
INT = 0.312438

cherry_5
INT = 0.307593

sunset1_3
INT = 0.306436

sunset1_4
INT = 0.304935

crater_2
INT = 0.304551

stHelens_3
INT = 0.300853

sunset1_2
INT = 0.295169

sunset1_1
INT = 0.266510

stHelens_4
INT = 0.258324

pond_2
INT = 0.254801

cherry_2
INT = 0.254410

pond_1
INT = 0.254063

cherry_1
INT = 0.247306

sunset2_2
INT = 0.243229

pond_3
INT = 0.238480

boat_1
INT = 0.238236

cherry_3
INT = 0.228154

sunset2_3
INT = 0.210505

pond_4
INT = 0.200111

cherry_4
INT = 0.185777

sunset2_1
INT = 0.173512

cherry_3, with OPP, INT, and spatial information


cherry_3
INT = 1.000000

cherry_4
INT = 0.836612

cherry_1
INT = 0.770253

cherry_2
INT = 0.690043

cherry_5
INT = 0.565001

stHelens_1
INT = 0.256456

stHelens_4
INT = 0.225209

stHelens_2
INT = 0.222612

sunset1_4
INT = 0.215789

stHelens_3
INT = 0.207630

sunset2_5
INT = 0.205184

crater_3
INT = 0.203379

sunset1_5
INT = 0.199798

beach_3
INT = 0.198985

boat_1
INT = 0.189823

crater_5
INT = 0.182479

boat_2
INT = 0.175688

beach_4
INT = 0.175672

sunset1_2
INT = 0.174699

sunset1_3
INT = 0.172016

crater_4
INT = 0.167940

stHelens_5
INT = 0.163799

sunset1_1
INT = 0.159855

pond_5
INT = 0.157487

pond_3
INT = 0.148892

boat_4
INT = 0.143926

pond_1
INT = 0.139041

boat_5
INT = 0.137636

pond_2
INT = 0.135698

boat_3
INT = 0.135160

beach_2
INT = 0.125947

sunset2_4
INT = 0.121766

beach_1
INT = 0.095804

beach_5
INT = 0.089844

crater_2
INT = 0.079687

crater_1
INT = 0.071903

pond_4
INT = 0.070332

sunset2_3
INT = 0.065139

sunset2_2
INT = 0.046270

sunset2_1
INT = 0.029018

cherry_3, with OPP, INT, but no spatial information


cherry_3
INT = 1.000000

cherry_4
INT = 0.855881

cherry_1
INT = 0.853600

cherry_2
INT = 0.843191

cherry_5
INT = 0.574825

stHelens_1
INT = 0.321933

sunset2_5
INT = 0.288117

beach_3
INT = 0.275774

pond_5
INT = 0.275529

boat_2
INT = 0.270535

sunset1_4
INT = 0.269298

sunset1_5
INT = 0.265008

stHelens_2
INT = 0.259437

beach_2
INT = 0.258999

stHelens_4
INT = 0.256469

boat_3
INT = 0.249657

stHelens_3
INT = 0.246455

pond_1
INT = 0.244341

pond_4
INT = 0.243557

sunset1_3
INT = 0.242180

crater_3
INT = 0.234039

beach_4
INT = 0.233692

pond_2
INT = 0.228837

boat_5
INT = 0.228154

sunset2_4
INT = 0.223620

sunset1_1
INT = 0.223540

pond_3
INT = 0.222784

crater_5
INT = 0.220163

sunset1_2
INT = 0.215494

boat_1
INT = 0.210543

crater_4
INT = 0.208112

stHelens_5
INT = 0.206779

boat_4
INT = 0.181484

beach_1
INT = 0.138781

crater_2
INT = 0.126446

crater_1
INT = 0.110273

beach_5
INT = 0.101606

sunset2_3
INT = 0.094367

sunset2_2
INT = 0.086631

sunset2_1
INT = 0.052223

stHelens_2, with OPP, INT, and spatial information


stHelens_2
INT = 1.000000

stHelens_3
INT = 0.840055

stHelens_4
INT = 0.775833

stHelens_1
INT = 0.607386

boat_1
INT = 0.574717

stHelens_5
INT = 0.528828

beach_3
INT = 0.507458

beach_4
INT = 0.431683

crater_1
INT = 0.385202

beach_2
INT = 0.343356

beach_1
INT = 0.314147

boat_3
INT = 0.309824

beach_5
INT = 0.305205

cherry_5
INT = 0.298816

cherry_1
INT = 0.264817

boat_2
INT = 0.260319

crater_3
INT = 0.257767

pond_3
INT = 0.254899

crater_4
INT = 0.252601

pond_1
INT = 0.250010

cherry_2
INT = 0.249749

boat_5
INT = 0.246224

crater_5
INT = 0.237907

boat_4
INT = 0.235430

pond_2
INT = 0.233493

cherry_3
INT = 0.222612

sunset2_5
INT = 0.207311

sunset1_3
INT = 0.200859

cherry_4
INT = 0.198961

sunset1_1
INT = 0.196302

sunset1_2
INT = 0.191781

pond_5
INT = 0.187497

sunset1_4
INT = 0.173083

crater_2
INT = 0.162780

sunset1_5
INT = 0.143418

sunset2_4
INT = 0.127858

sunset2_3
INT = 0.116624

pond_4
INT = 0.108724

sunset2_2
INT = 0.094964

sunset2_1
INT = 0.079388

stHelens_2, with OPP, INT, but no spatial information


stHelens_2
INT = 1.000000

stHelens_3
INT = 0.870706

stHelens_4
INT = 0.814740

stHelens_1
INT = 0.644349

boat_1
INT = 0.620195

stHelens_5
INT = 0.552113

beach_3
INT = 0.517305

crater_5
INT = 0.458542

beach_4
INT = 0.452090

crater_4
INT = 0.446068

crater_1
INT = 0.424033

crater_3
INT = 0.409847

boat_3
INT = 0.407490

boat_4
INT = 0.399170

boat_2
INT = 0.398115

beach_2
INT = 0.380091

pond_3
INT = 0.375081

beach_5
INT = 0.373997

beach_1
INT = 0.365479

pond_5
INT = 0.353887

pond_2
INT = 0.331908

cherry_5
INT = 0.331465

boat_5
INT = 0.330882

crater_2
INT = 0.325078

pond_1
INT = 0.321982

sunset2_5
INT = 0.316768

sunset2_3
INT = 0.309297

pond_4
INT = 0.301276

sunset2_2
INT = 0.299756

cherry_2
INT = 0.297010

cherry_1
INT = 0.292885

sunset2_4
INT = 0.279027

sunset1_3
INT = 0.266966

sunset1_2
INT = 0.259606

cherry_3
INT = 0.259437

sunset1_1
INT = 0.258343

cherry_4
INT = 0.254932

sunset1_5
INT = 0.214225

sunset1_4
INT = 0.194876

sunset2_1
INT = 0.170853

sunset1_2, with OPP, INT, and spatial information


sunset1_2
INT = 1.000000

sunset1_3
INT = 0.913506

sunset1_1
INT = 0.844505

sunset2_4
INT = 0.464518

boat_2
INT = 0.411253

sunset2_5
INT = 0.402031

sunset1_4
INT = 0.397692

sunset1_5
INT = 0.372933

crater_5
INT = 0.279788

boat_5
INT = 0.261992

boat_3
INT = 0.258350

boat_4
INT = 0.258213

crater_4
INT = 0.238597

sunset2_2
INT = 0.220020

cherry_5
INT = 0.213704

sunset2_3
INT = 0.208656

cherry_2
INT = 0.203221

cherry_1
INT = 0.194651

stHelens_1
INT = 0.193232

stHelens_2
INT = 0.191781

beach_3
INT = 0.188558

crater_2
INT = 0.187806

crater_3
INT = 0.179251

beach_2
INT = 0.178766

cherry_3
INT = 0.174699

stHelens_3
INT = 0.174196

beach_4
INT = 0.162448

sunset2_1
INT = 0.158711

beach_5
INT = 0.154443

crater_1
INT = 0.153952

stHelens_4
INT = 0.147292

stHelens_5
INT = 0.143887

cherry_4
INT = 0.124260

beach_1
INT = 0.121715

boat_1
INT = 0.117021

pond_4
INT = 0.103311

pond_2
INT = 0.083477

pond_5
INT = 0.083402

pond_1
INT = 0.066344

pond_3
INT = 0.063483

sunset1_2, with OPP, INT, but no spatial information


sunset1_2
INT = 1.000000

sunset1_3
INT = 0.919782

sunset1_1
INT = 0.845514

sunset2_5
INT = 0.561488

sunset2_4
INT = 0.548262

sunset1_5
INT = 0.483470

boat_2
INT = 0.435957

sunset1_4
INT = 0.435072

crater_4
INT = 0.351087

crater_5
INT = 0.350954

pond_4
INT = 0.321302

crater_1
INT = 0.314023

boat_4
INT = 0.306637

beach_5
INT = 0.295407

boat_5
INT = 0.295169

crater_3
INT = 0.287780

sunset2_1
INT = 0.286803

sunset2_2
INT = 0.286523

boat_3
INT = 0.281999

sunset2_3
INT = 0.260788

stHelens_2
INT = 0.259606

crater_2
INT = 0.258610

stHelens_3
INT = 0.257546

stHelens_1
INT = 0.244727

cherry_5
INT = 0.241275

cherry_2
INT = 0.241085

boat_1
INT = 0.239775

beach_1
INT = 0.238337

stHelens_5
INT = 0.237920

beach_3
INT = 0.230410

cherry_1
INT = 0.224755

stHelens_4
INT = 0.216647

cherry_3
INT = 0.215494

pond_5
INT = 0.210498

cherry_4
INT = 0.203724

pond_2
INT = 0.202389

beach_2
INT = 0.200524

beach_4
INT = 0.176335

pond_1
INT = 0.144333

pond_3
INT = 0.124889

Precision vs Recall

Here is a spreadsheet summarizing all the data. The printouts from all the tests can be found in these files, which are given explanatory names: Here is the graph of precision versus recall (also on the second sheet of the spreadsheet):

It seems pretty clear from the graph that the best combined value of precision and recall (which is subjective, of course), is the circled dot. This corresponds to a recall of 0.76 and a precision of 0.76. Examining the spreadsheet shows that there are two sets of parameters that give this optimal behavior:

Google results

Beaches

Sample image:

beach_1

Program output.
Matches in order by similarity to beach_1, with most similar first:

3rd on Google Images; INT = 0.577093


13th on Google Images; INT = 0.364683


6th on Google Images; INT = 0.360995


20th on Google Images; INT = 0.317713


1st on Google Images; INT = 0.256480


10th on Google Images; INT = 0.190380


8th on Google Images; INT = 0.185160


9th on Google Images; INT = 0.183890


11th on Google Images; INT = 0.181408


19th on Google Images; INT = 0.167649


17th on Google Images; INT = 0.166770


15th on Google Images; INT = 0.161546


18th on Google Images; INT = 0.123653


5th on Google Images; INT = 0.106800


7th on Google Images; INT = 0.097797


14th on Google Images; INT = 0.079019


4th on Google Images; INT = 0.069709


2nd on Google Images; INT = 0.043107


12th on Google Images; INT = 0.035118


16th on Google Images; INT = 0.031380

Boats

Sample image:

boat_2

Program output.
Matches in order by similarity to boat_2, with most similar first:

11th on Google Images; INT = 0.942410


17th on Google Images; INT = 0.795120


15th on Google Images; INT = 0.743889


14th on Google Images; INT = 0.718275


8th on Google Images; INT = 0.500371


20th on Google Images; INT = 0.451800


16th on Google Images; INT = 0.442314


7th on Google Images; INT = 0.424541


1st on Google Images; INT = 0.381410


9th on Google Images; INT = 0.364886


10th on Google Images; INT = 0.349358


3rd on Google Images; INT = 0.345843


5th on Google Images; INT = 0.310875


12th on Google Images; INT = 0.301599


4th on Google Images; INT = 0.297600


19th on Google Images; INT = 0.295088


18th on Google Images; INT = 0.199489


2nd on Google Images; INT = 0.122076


13th on Google Images; INT = 0.121704


6th on Google Images; INT = 0.071184