Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions fingerprint/infra/nec-bio-sdk/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,6 @@ dependencies {
//NEC SDK lib and wrapper
implementation(libs.nec.wrapper)
implementation(libs.nec.lib)
// Image processing libs
// WsqDecoder and BitmapConverter libs are very old and we should consider replacing them but
// they are the only ones that works with wsq images
implementation(libs.secugen)
implementation(libs.wsqDecoder)
implementation(libs.bitmapConverter){
exclude("com.android.support")
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.simprints.fingerprint.infra.necsdkimpl

import com.secugen.WSQConverter
import com.simprints.fingerprint.infra.basebiosdk.FingerprintBioSdk
import com.simprints.fingerprint.infra.necsdkimpl.acquisition.image.FingerprintImageProviderImpl
import com.simprints.fingerprint.infra.necsdkimpl.acquisition.template.FingerprintTemplateAcquisitionSettings
Expand All @@ -10,7 +11,6 @@ import com.simprints.fingerprint.infra.necsdkimpl.matching.FingerprintMatcherImp
import com.simprints.fingerprint.infra.necsdkimpl.matching.NecMatchingSettings
import com.simprints.necwrapper.nec.NEC
import com.simprints.sgimagecorrection.SecugenImageCorrection
import com.ygoular.bitmapconverter.BitmapConverter
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand Down Expand Up @@ -49,7 +49,7 @@ object NecSdkModule {

@Provides
@Singleton
internal fun provideBitmapConverter() = BitmapConverter()
internal fun provideWSQConverter () = WSQConverter()

@Provides
@Singleton
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.simprints.fingerprint.infra.necsdkimpl.acquisition.template

import com.secugen.RawImage
import com.secugen.WSQConverter
import com.simprints.core.DispatcherIO
import com.simprints.fingerprint.infra.basebiosdk.acquisition.FingerprintTemplateProvider
import com.simprints.fingerprint.infra.basebiosdk.acquisition.domain.TemplateResponse
Expand All @@ -14,7 +16,7 @@ import javax.inject.Inject

internal class FingerprintTemplateProviderImpl @Inject constructor(
private val fingerprintCaptureWrapperFactory: FingerprintCaptureWrapperFactory,
private val decodeWSQImageUseCase: DecodeWSQImageUseCase,
private val wsqConverter: WSQConverter,
private val secugenImageCorrection: SecugenImageCorrection,
private val acquireImageDistortionConfigurationUseCase: AcquireImageDistortionConfigurationUseCase,
private val calculateNecImageQualityUseCase: CalculateNecImageQualityUseCase,
Expand All @@ -40,15 +42,19 @@ internal class FingerprintTemplateProviderImpl @Inject constructor(
// Always require a new image from the scanner using the minimum resolution as we will
// process it using secugen image correction
log("Acquiring unprocessed image")
val unprocessedImage = captureWrapper.acquireUnprocessedImage(
val rawFingerprintScan = captureWrapper.acquireUnprocessedImage(
Dpi(MIN_CAPTURE_DPI)
).rawUnprocessedImage
captureProcessedImageCache.recentlyCapturedImage = unprocessedImage.imageData
captureProcessedImageCache.recentlyCapturedImage = rawFingerprintScan.imageData
log("Unprocessed image acquired, processing it")
val decodedImage = decodeWSQImageUseCase(unprocessedImage)
log("Image decoded successfully ${decodedImage.resolution}")
val decodedImage = wsqConverter.fromWSQToRaw(rawFingerprintScan.imageData)
log("processing image using secugen image correction")
val secugenProcessedImage = processImage(settings, decodedImage)
val secugenProcessedImage = processImage(
settings,
decodedImage,
rawFingerprintScan.un20SerialNumber,
rawFingerprintScan.brightness
)
log("quality checking image using nec sdk")
val qualityScore = calculateNecImageQualityUseCase(secugenProcessedImage)
log("quality score is $qualityScore the threshold is ${settings.qualityThreshold}")
Expand All @@ -73,16 +79,17 @@ internal class FingerprintTemplateProviderImpl @Inject constructor(

private suspend fun processImage(
settings: FingerprintTemplateAcquisitionSettings,
rawImage: FingerprintRawImage
rawImage: RawImage,
un20SerialNumber: ByteArray,
brightness: Byte
): FingerprintImage {
val scannerConfig = SecugenImageCorrection.ScannerConfig(
acquireImageDistortionConfigurationUseCase(),
settings.processingResolution?.value ?: DEFAULT_RESOLUTION,
rawImage.un20SerialNumber,
rawImage.brightness
un20SerialNumber,
brightness
)
val processedImage =
secugenImageCorrection.processRawImage(rawImage.imageBytes, scannerConfig)
val processedImage = secugenImageCorrection.processRawImage(rawImage.bytes, scannerConfig)
return FingerprintImage(
processedImage.imageBytes,
processedImage.width,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.simprints.fingerprint.infra.necsdkimpl.acquisition.template

import com.secugen.WSQConverter
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.google.common.truth.Truth
import com.simprints.fingerprint.infra.basebiosdk.acquisition.domain.TemplateResponse
Expand Down Expand Up @@ -40,7 +41,7 @@ class FingerprintTemplateProviderImplTest {
private lateinit var extractNecTemplateUseCase: ExtractNecTemplateUseCase

@RelaxedMockK
private lateinit var decodeWsqImageUseCase: DecodeWSQImageUseCase
private lateinit var wsqConverter: WSQConverter

@RelaxedMockK
private lateinit var processedImageCache: ProcessedImageCache
Expand Down Expand Up @@ -68,7 +69,7 @@ class FingerprintTemplateProviderImplTest {
))
fingerprintTemplateProviderImpl = FingerprintTemplateProviderImpl(
fingerprintCaptureWrapperFactory = fingerprintCaptureWrapperFactory,
decodeWSQImageUseCase = decodeWsqImageUseCase,
wsqConverter = wsqConverter,
secugenImageCorrection = secugenImageCorrection,
acquireImageDistortionConfigurationUseCase = acquireImageDistortionConfigurationUseCase,
calculateNecImageQualityUseCase = calculateNecImageQualityUseCase,
Expand Down Expand Up @@ -104,7 +105,7 @@ class FingerprintTemplateProviderImplTest {
coVerify {
captureWrapper
.acquireUnprocessedImage(any())
decodeWsqImageUseCase.invoke(any())
wsqConverter.fromWSQToRaw(any())
processedImageCache.recentlyCapturedImage = any()
secugenImageCorrection.processRawImage(any(), any())
calculateNecImageQualityUseCase.invoke(any())
Expand All @@ -130,7 +131,7 @@ class FingerprintTemplateProviderImplTest {
coVerify {
captureWrapper
.acquireUnprocessedImage(any())
decodeWsqImageUseCase.invoke(any())
wsqConverter.fromWSQToRaw(any())
processedImageCache.recentlyCapturedImage = any()
secugenImageCorrection.processRawImage(any(), any())
calculateNecImageQualityUseCase.invoke(any())
Expand All @@ -157,7 +158,7 @@ class FingerprintTemplateProviderImplTest {
coVerify {
captureWrapper
.acquireUnprocessedImage(any())
decodeWsqImageUseCase.invoke(any())
wsqConverter.fromWSQToRaw(any())
processedImageCache.recentlyCapturedImage = any()
secugenImageCorrection.processRawImage(any(), any())
calculateNecImageQualityUseCase.invoke(any())
Expand Down
10 changes: 1 addition & 9 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,7 @@ libsimprints_version = "2024.1.1"
simmatcher_version = "1.2.0"
roc_wrapper_version = "1.23"
nec_version = "1.5.0"
secugen_version = "1.0.0"
wsq_version = "1.2"
bitmapConverter_version = "0.2.0"
secugen_version = "1.1.0"

junit_version = "4.13.2"
junit_ext_version = "1.1.5"
Expand Down Expand Up @@ -209,12 +207,6 @@ nec-lib = { module = "com.nec:lib", version.ref = "nec_version" }
# secugen sdk hosted in https://github.com/Simprints/secugen-wrapper
secugen = { module = "com.simprints:secugenwrapper", version.ref = "secugen_version" }

#WSQ
wsqDecoder = { module = "com.gemalto.wsq:wsq-android", version.ref = "wsq_version" }
# BitmapConverter
bitmapConverter= {module= "com.github.yoanngoular:bitmapconverter", version.ref = "bitmapConverter_version"}


#hilt
hilt = { module = "com.google.dagger:hilt-android", version.ref = "hilt_version" }
hilt-kapt = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt_version" }
Expand Down