.
151
TestImages/README.md
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
# Test Images
|
||||
|
||||
This directory contains **225 reference images** for testing card recognition algorithms without requiring actual hardware.
|
||||
|
||||
## Directory Structure
|
||||
|
||||
| Category | Count | Description |
|
||||
|----------|-------|-------------|
|
||||
| `reference_alpha/` | 47 | Alpha edition reference cards (old frame) |
|
||||
| `varying_quality/` | 38 | Different lighting, blur, exposure, angles |
|
||||
| `single_cards/` | 19 | Individual card photos |
|
||||
| `real_photos/` | 18 | Phone camera photos from Visions project |
|
||||
| `foreign/` | 16 | Non-English cards (Japanese, German, French, etc.) |
|
||||
| `worn/` | 15 | Heavily played, damaged, worn cards |
|
||||
| `foil/` | 14 | Foil cards with holographic glare/reflections |
|
||||
| `low_light/` | 14 | Poor lighting, glare, shadows, amateur photos |
|
||||
| `tokens/` | 13 | Tokens and planeswalker emblems |
|
||||
| `hands/` | 11 | Cards held in hand (partial visibility) |
|
||||
| `ocr_test/` | 10 | Images optimized for OCR testing |
|
||||
| `reference/` | 9 | High-quality reference scans |
|
||||
| `multiple_cards/` | 6 | Multiple cards in frame |
|
||||
| `augmented/` | 4 | Augmented training examples |
|
||||
| `training_examples/` | 3 | ML training set samples |
|
||||
| `angled/` | 2 | Perspective distortion |
|
||||
|
||||
## Image Sources
|
||||
|
||||
Images from open-source MIT-licensed projects:
|
||||
|
||||
- [hj3yoo/mtg_card_detector](https://github.com/hj3yoo/mtg_card_detector)
|
||||
- [tmikonen/magic_card_detector](https://github.com/tmikonen/magic_card_detector)
|
||||
- [fortierq/mtgscan](https://github.com/fortierq/mtgscan)
|
||||
- [LauriHursti/visions](https://github.com/LauriHursti/visions)
|
||||
- [KLuml/CardScanner](https://github.com/KLuml/CardScanner)
|
||||
- [dills122/MTG-Card-Analyzer](https://github.com/dills122/MTG-Card-Analyzer)
|
||||
- [ryanlin/Turtle](https://github.com/ryanlin/Turtle)
|
||||
|
||||
Additional images from:
|
||||
- Reddit r/magicTCG (user-submitted photos)
|
||||
- Flickr (Creative Commons)
|
||||
- Card Kingdom / Face to Face Games grading guides
|
||||
- Scryfall (foreign language card scans)
|
||||
|
||||
## Usage
|
||||
|
||||
```csharp
|
||||
[Theory]
|
||||
[InlineData("varying_quality/test1.jpg")]
|
||||
[InlineData("angled/tilted_card_1.jpg")]
|
||||
[InlineData("hands/hand_of_card_1.png")]
|
||||
[InlineData("foil/rainbow_foil_secret_lair.jpg")]
|
||||
[InlineData("worn/hp_shuffle_crease.webp")]
|
||||
[InlineData("foreign/japanese_aang.jpg")]
|
||||
public async Task RecognizeCard_VaryingConditions(string imagePath)
|
||||
{
|
||||
using var stream = File.OpenRead(Path.Combine("TestImages", imagePath));
|
||||
var result = await _recognitionService.RecognizeCardAsync(stream);
|
||||
|
||||
Assert.True(result.Success);
|
||||
Assert.NotNull(result.Card);
|
||||
Assert.True(result.Confidence >= 0.7f);
|
||||
}
|
||||
```
|
||||
|
||||
## Category Details
|
||||
|
||||
### foil/
|
||||
Foil cards showing holographic effects that challenge recognition:
|
||||
- Rainbow foils with color-shifting (`rainbow_foil_secret_lair.jpg`)
|
||||
- Surge foils with holo stickers (`surge_foils_holo.jpeg`)
|
||||
- Old-style foils (`old_foil_yawgmoth.jpg`)
|
||||
- Textured/dragonscale foils (`dragonscale_foil.jpg`)
|
||||
- Foil curling examples showing warping
|
||||
|
||||
### worn/
|
||||
Heavily played and damaged cards:
|
||||
- Edge whitening (`edge_white.png`, `very_good_*.jpg`)
|
||||
- Scratches and scuffs (`scratch.png`, `hp_scratches.png`)
|
||||
- Creases and bends (`hp_shuffle_crease.webp`, `bent_creased.jpg`)
|
||||
- Binder damage (`hp_binder_bite_*.webp`)
|
||||
- Water damage (`hp_water_warping.png`)
|
||||
- Corner damage (`hp_compromised_corner.webp`)
|
||||
|
||||
### low_light/
|
||||
Poor lighting and amateur photography conditions:
|
||||
- Glare from toploaders/sleeves (`glare_toploader.png`)
|
||||
- Direct light causing hotspots (`glare_straight_down.jpg`)
|
||||
- Depth of field blur (`dof_blur_amateur.jpg`)
|
||||
- Amateur condition photos with shadows
|
||||
- Flickr collection shots with mixed lighting
|
||||
|
||||
### foreign/
|
||||
Non-English cards (8 languages):
|
||||
- Japanese (日本語)
|
||||
- German (Deutsch)
|
||||
- French (Français)
|
||||
- Italian (Italiano)
|
||||
- Spanish (Español)
|
||||
- Russian (Русский)
|
||||
- Simplified Chinese (简体中文)
|
||||
- Korean (한국어)
|
||||
|
||||
### tokens/
|
||||
Tokens and planeswalker emblems:
|
||||
- Official WotC tokens
|
||||
- Custom/altered tokens
|
||||
- Planeswalker emblems (Elspeth, Gideon, Narset)
|
||||
- Token collections and gameplay shots
|
||||
|
||||
### varying_quality/
|
||||
Images with various real-world challenges:
|
||||
- Different camera exposures
|
||||
- BGS graded cases (`counterspell_bgs.jpg`)
|
||||
- Cards in plastic sleeves (`card_in_plastic_case.jpg`)
|
||||
- Various lighting conditions
|
||||
- 28 numbered test images (`test1.jpg` - `test27.jpg`)
|
||||
|
||||
### reference_alpha/
|
||||
47 Limited Edition Alpha cards for old-frame recognition:
|
||||
- Power Nine (Black Lotus, Ancestral Recall, Moxen, etc.)
|
||||
- Dual lands (Underground Sea, Volcanic Island, etc.)
|
||||
- Classic staples (Lightning Bolt, Counterspell, Sol Ring)
|
||||
|
||||
### hands/
|
||||
Cards held in hand - partial visibility, stacked:
|
||||
- Various deck archetypes (Tron, Green, Red)
|
||||
- New and old frame cards
|
||||
- Different lighting conditions
|
||||
|
||||
### real_photos/
|
||||
Phone camera photos from Visions project:
|
||||
- Real-world scanning conditions
|
||||
- Various resolutions and crops
|
||||
- Includes processed result images
|
||||
|
||||
### ocr_test/
|
||||
From CardScanner project, graded by difficulty:
|
||||
- `card0-4.jpg`: Easier recognition
|
||||
- `card10-13.jpg`: Harder recognition (noted ~less accuracy)
|
||||
|
||||
## TODO: Additional Categories Needed
|
||||
|
||||
- [ ] **double_faced/** - Transform/MDFC cards (both sides)
|
||||
- [ ] **art_cards/** - Art series cards without text boxes
|
||||
- [ ] **promos/** - Extended art, borderless, showcase frames
|
||||
- [ ] **very_low_light/** - Near-dark conditions
|
||||
- [ ] **motion_blur/** - Cards in motion during scanning
|
||||
|
||||
## License
|
||||
|
||||
Card artwork is property of Wizards of the Coast. Images used for testing/research purposes only.
|
||||
BIN
TestImages/angled/tilted_card_1.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
TestImages/angled/tilted_card_2.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
TestImages/augmented/augmented_1.jpg
Normal file
|
After Width: | Height: | Size: 568 KiB |
BIN
TestImages/augmented/augmented_2.jpg
Normal file
|
After Width: | Height: | Size: 622 KiB |
BIN
TestImages/augmented/augmented_3.jpg
Normal file
|
After Width: | Height: | Size: 503 KiB |
BIN
TestImages/augmented/augmented_4.jpg
Normal file
|
After Width: | Height: | Size: 500 KiB |
BIN
TestImages/foil/dragonscale_foil.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
TestImages/foil/foil_curling_1.jpg
Normal file
|
After Width: | Height: | Size: 1 MiB |
BIN
TestImages/foil/foil_curling_2.jpg
Normal file
|
After Width: | Height: | Size: 962 KiB |
BIN
TestImages/foil/foil_jpn_mystical_archives.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
TestImages/foil/foil_peel_holo_layer.jpg
Normal file
|
After Width: | Height: | Size: 695 KiB |
BIN
TestImages/foil/foil_quality_comparison.jpeg
Normal file
|
After Width: | Height: | Size: 879 KiB |
BIN
TestImages/foil/foil_swamp_collection.jpg
Normal file
|
After Width: | Height: | Size: 888 KiB |
BIN
TestImages/foil/modern_vs_og_foils.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
TestImages/foil/old_foil_yawgmoth.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
TestImages/foil/rainbow_foil_secret_lair.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
TestImages/foil/rainbow_foil_sheldons.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
TestImages/foil/surge_foil_rhino.jpeg
Normal file
|
After Width: | Height: | Size: 296 KiB |
BIN
TestImages/foil/surge_foils_holo.jpeg
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
TestImages/foil/textured_foils.jpg
Normal file
|
After Width: | Height: | Size: 215 KiB |
BIN
TestImages/foreign/chinese_aarakocra.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
TestImages/foreign/chinese_abattoir_ghoul.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
TestImages/foreign/french_aang.jpg
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
TestImages/foreign/french_abattoir_ghoul.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
TestImages/foreign/german_aang.jpg
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
TestImages/foreign/german_abattoir_ghoul.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
TestImages/foreign/italian_aang.jpg
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
TestImages/foreign/japanese_aang.jpg
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
TestImages/foreign/japanese_abduction.jpg
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
TestImages/foreign/japanese_aberrant_researcher.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
TestImages/foreign/japanese_abhorrent_overlord.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
TestImages/foreign/korean_aarakocra.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
TestImages/foreign/korean_abattoir_ghoul.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
TestImages/foreign/russian_aarakocra.jpg
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
TestImages/foreign/russian_abattoir_ghoul.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
TestImages/foreign/spanish_aang.jpg
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
TestImages/hands/handOfCards.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
TestImages/hands/hand_of_card_1.png
Normal file
|
After Width: | Height: | Size: 430 KiB |
BIN
TestImages/hands/hand_of_card_green_1.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
TestImages/hands/hand_of_card_green_2.jpeg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
TestImages/hands/hand_of_card_ktk.png
Normal file
|
After Width: | Height: | Size: 464 KiB |
BIN
TestImages/hands/hand_of_card_new_frame.webp
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
TestImages/hands/hand_of_card_one_hand.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
TestImages/hands/hand_of_card_red.jpeg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
TestImages/hands/hand_of_card_tron.png
Normal file
|
After Width: | Height: | Size: 486 KiB |
BIN
TestImages/hands/klomparens_hand.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
TestImages/hands/li38_handOfCards.jpg
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
TestImages/low_light/authenticity_check.jpg
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
TestImages/low_light/basic_lands_amateur.jpg
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
TestImages/low_light/condition_amateur_1.jpg
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
TestImages/low_light/condition_amateur_2.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
TestImages/low_light/diy_lighting_rig.jpg
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
TestImages/low_light/dof_blur_amateur.jpg
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
TestImages/low_light/fake_detection.jpg
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
TestImages/low_light/flickr_collection_1.jpg
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
TestImages/low_light/flickr_collection_2.jpg
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
TestImages/low_light/flickr_collection_3.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
TestImages/low_light/glare_straight_down.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
TestImages/low_light/glare_toploader.png
Normal file
|
After Width: | Height: | Size: 421 KiB |
BIN
TestImages/low_light/grading_amateur.jpg
Normal file
|
After Width: | Height: | Size: 85 KiB |
BIN
TestImages/low_light/macro_monday_shadows.jpg
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
TestImages/multiple_cards/alpha_deck.jpg
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
TestImages/multiple_cards/geyser_twister_fireball.jpg
Normal file
|
After Width: | Height: | Size: 865 KiB |
BIN
TestImages/multiple_cards/lands_and_fatties.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
TestImages/multiple_cards/magic1.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
TestImages/multiple_cards/pro_tour_side.png
Normal file
|
After Width: | Height: | Size: 999 KiB |
BIN
TestImages/multiple_cards/pro_tour_table.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
TestImages/ocr_test/card.jpg
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
TestImages/ocr_test/card0.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
TestImages/ocr_test/card1.jpg
Normal file
|
After Width: | Height: | Size: 241 KiB |
BIN
TestImages/ocr_test/card10.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
TestImages/ocr_test/card11.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
TestImages/ocr_test/card12.jpg
Normal file
|
After Width: | Height: | Size: 808 KiB |
BIN
TestImages/ocr_test/card13.jpg
Normal file
|
After Width: | Height: | Size: 747 KiB |
BIN
TestImages/ocr_test/card2.jpg
Normal file
|
After Width: | Height: | Size: 406 KiB |
BIN
TestImages/ocr_test/card3.jpg
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
TestImages/ocr_test/card4.jpg
Normal file
|
After Width: | Height: | Size: 220 KiB |
BIN
TestImages/real_photos/visions_1.jpg
Normal file
|
After Width: | Height: | Size: 161 KiB |
BIN
TestImages/real_photos/visions_1_square.jpg
Normal file
|
After Width: | Height: | Size: 277 KiB |
BIN
TestImages/real_photos/visions_2.jpg
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
TestImages/real_photos/visions_2_square.jpg
Normal file
|
After Width: | Height: | Size: 270 KiB |
BIN
TestImages/real_photos/visions_3.jpg
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
TestImages/real_photos/visions_4.jpg
Normal file
|
After Width: | Height: | Size: 214 KiB |
BIN
TestImages/real_photos/visions_5.jpg
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
TestImages/real_photos/visions_6.jpg
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
TestImages/real_photos/visions_6_square.jpg
Normal file
|
After Width: | Height: | Size: 268 KiB |
BIN
TestImages/real_photos/visions_7.jpg
Normal file
|
After Width: | Height: | Size: 282 KiB |
BIN
TestImages/real_photos/visions_8.jpg
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
TestImages/real_photos/visions_8_big.jpg
Normal file
|
After Width: | Height: | Size: 272 KiB |
BIN
TestImages/real_photos/visions_9.jpg
Normal file
|
After Width: | Height: | Size: 458 KiB |
BIN
TestImages/real_photos/visions_9_small.jpg
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
TestImages/real_photos/visions_result_1.jpg
Normal file
|
After Width: | Height: | Size: 309 KiB |
BIN
TestImages/real_photos/visions_result_2.jpg
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
TestImages/real_photos/visions_result_3.jpg
Normal file
|
After Width: | Height: | Size: 278 KiB |
BIN
TestImages/real_photos/visions_result_4.jpg
Normal file
|
After Width: | Height: | Size: 194 KiB |
BIN
TestImages/reference/brainstorm.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
TestImages/reference/force_of_will.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
TestImages/reference/griselbrand.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
TestImages/reference/lotus_petal.png
Normal file
|
After Width: | Height: | Size: 43 KiB |