Skip to content

References

ksj2001 edited this page Dec 16, 2024 · 11 revisions

Introduction

Note: This can help you to understand the basic information of currency detection.

Features of Korean Won

Intaglio latent Images

  • Description: When viewed at an angle (askance) from the position of the eyes, the word 'WON' appears.
  • How it works: This effect is achieved using a special intaglio printing method, which creates fine grooves and patterns on the note.
  • Purpose: It helps verify the authenticity of the currency because the latent image is difficult to reproduce in counterfeit banknotes.

Windowed Security Thread

  • Description: The security thread is a plastic film that includes hologram letters.
  • Appearance: It is partially exposed at regular intervals on the left side of the portrait (obverse side of the note).
  • Purpose: Prevents counterfeiting as hologram technology is challenging to replicate. Acts as a verification feature for checking the authenticity of banknotes.

Color-Shifted Ink

  • Description: Special ink is mixed with materials that have different light reflection properties.
  • Effect: When the note is tilted at various angles, the face value number changes color from green to blue.
  • Purpose: This feature makes counterfeiting more difficult because reproducing color-shifting ink requires advanced technology.

See Through Register

  • Description: The Taeguek symbol (a traditional Korean symbol) is divided and printed on both sides of a banknote.
  • How it works: When the note is held up to light, the two divided shapes align perfectly to form a complete Taeguek.
  • Description: This feature is used to verify the authenticity of the banknote since precise alignment is difficult to replicate in counterfeit notes.

Micro Lettering

  • Description: Tiny letters or patterns are printed on the banknote that are difficult to see with the naked eye but can be observed using a magnifier.
  • Forgery Detection: When counterfeit banknotes are created using color printers or copiers, the micro lettering often appears as a solid or dotted line instead of clear letters.
  • Purpose: Micro lettering prevents counterfeiting since it requires advanced printing technology to replicate with precision.

Watermark

  • Description: When the banknote is held up to light, a hidden reverse image portrait becomes visible in the blank space on the left side of the note.
  • How it works: This effect is created by variations in the thickness of the paper during the manufacturing process.
  • Purpose: Watermarks are difficult to counterfeit as they require specialized printing and paper manufacturing processes.

SPAS (Special Press and Soldering)

  • Description: Without holding the note up to the light, the hidden face value number can be observed directly with the naked eye due to enlarged thickness differences in certain areas of the note.
  • Purpose: It enhances security and allows for quick verification of the note's authenticity.

link: https://www.komsco.com/guide/sub4.html

Currency detecton for visually impaired

Purpose

Currency recognition systems aim to help visually impaired individuals identify banknotes easily and accurately. These systems typically provide audio or tactile feedback to communicate the banknote's denomination.

Key Techniques

  1. Computer Vision
  • Uses image processing and deep learning models to analyze captured images of banknotes.
  • Features like color, patterns, text, holograms, and unique visual markers are extracted.
  1. Machine Learning Models
  • Convolutional Neural Networks (CNNs): Classify and recognize denominations based on banknote images.
  • YOLO (You Only Look Once): Detect and recognize banknotes in real-time video streams.
  1. Optical Character Recognition (OCR)
  • Extracts and processes text (e.g., serial numbers, denominations) for identification.
  1. Edge and Feature Detection
  • Algorithms like SIFT (Scale-Invariant Feature Transform) detect patterns, edges, and unique markers to differentiate banknotes.

Workflow

  1. Image Capture:
  • A smartphone or camera captures the image of the banknote.
  1. Image Preprocessing:
  • Noise reduction, grayscale conversion, and alignment ensure clarity.
  1. Feature Extraction:
  • Color shifts, security features, and text are analyzed for accurate classification.
  1. Recognition and Feedback:
  • The denomination is identified and communicated to the user via audio output (e.g., "10,000 won").

link: https://www.ijres.org/papers/Volume-11/Issue-4/[1104732738.pdf](https://www.ijres.org/papers/Volume-11/Issue-4/1104732738.pdf)

  • Run in "check" mode (print formatting issues) clang-format --style=file:${HOME}/my-clang-format --dry-run --Werror <path-to-src-file>
  • Run in "inplace edit" mode (replace file contents with formatted code) clang-format --style=file:${HOME}/my-clang-format -i <path-to-src-file>
  • Run in editor using extension: consult your editor/extension documentation

Links

Future improvements

  • Create list of tracked files
  • Add cmake targets for check/format modes
  • Add CI task to check tracked files (in Documentation builder, for example)

Configuration

# clang-format version 12
# https://releases.llvm.org/12.0.0/tools/clang/docs/ClangFormatStyleOptions.html
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: None
AlignConsecutiveMacros: None
AlignEscapedNewlines: DontAlign
AlignOperands: Align
AlignTrailingComments: false
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: None
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BitFieldColonSpacing: Both
BreakBeforeBraces: Custom
BraceWrapping:
  AfterCaseLabel: true
  AfterClass: true
  AfterControlStatement: Always
  AfterEnum: true
  AfterFunction: true
  AfterNamespace: false
  AfterObjCDeclaration: true
  AfterStruct: true
  AfterUnion: true
  AfterExternBlock: true
  BeforeCatch: true
  BeforeElse: true
  BeforeLambdaBody: false
  BeforeWhile: true
  IndentBraces: false
  SplitEmptyFunction: true
  SplitEmptyRecord: true
  SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon
BreakStringLiterals: true
ColumnLimit: 100
CompactNamespaces: true
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
FixNamespaceComments: true
IncludeBlocks: Preserve
IndentCaseLabels: true
IndentExternBlock: NoIndent
IndentPPDirectives: AfterHash
IndentWidth: 4
IndentWrappedFunctionNames: true
InsertTrailingCommas: None
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
PenaltyBreakBeforeFirstCallParameter: 15
PenaltyBreakString: 10
#PenaltyReturnTypeOnItsOwnLine: 15
#PenaltyExcessCharacter: 3
PenaltyIndentedWhitespace: 1
PointerAlignment: Left
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatementsExceptForEachMacros
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++11
TabWidth: 8
UseTab: Never
#WhitespaceSensitiveMacros: ["CV_Check"]

© Copyright 2024, OpenCV team

Clone this wiki locally