Slide 1

Slide 1 text

7JTJPO'SBNFXPSLೖ໳ !NPUPLJFF QPUBUPUJQT

Slide 2

Slide 2 text

ࣗݾ঺հ w HJUIVC UXJUUFS!NPUPLJFF w ϝϧΧϦι΢κ΢J04ΤϯδχΞ w ϝϧΧϦΧ΢ϧνʔϜ w J04%$+BQBOελοϑ

Slide 3

Slide 3 text

7JTJPO'SBNFXPSLͱ͸

Slide 4

Slide 4 text

$PSF.-ͱ7JTJPOͷҧ͍͸ʁ

Slide 5

Slide 5 text

ΞϓϦέʔγϣϯ 7JTJPO /-1 $PSF.- "DDFMFSBUF .14 IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXEDΛࢀߟʹ࡞੒

Slide 6

Slide 6 text

ΞϓϦέʔγϣϯ 7JTJPO /-1
 /BUVSBM-BOHVBHF1SPDFTTJOH $PSF.- "DDFMFSBUF .14 %PNBJO4QFDJpD ಛఆͷλεΫʹಛԽͨ͠ը૾ղੳͷͨΊͷϑϨʔϜϫʔΫ

Slide 7

Slide 7 text

ΞϓϦέʔγϣϯ 7JTJPO /-1
 /BUVSBM-BOHVBHF1SPDFTTJOH $PSF.- "DDFMFSBUF .14 7JTJPO͸ը૾ղੳʹಛԽ͍ͯ͠Δ %PNBJO4QFDJpD

Slide 8

Slide 8 text

ΞϓϦέʔγϣϯ 7JTJPO /-1
 /BUVSBM-BOHVBHF1SPDFTTJOH $PSF.- "DDFMFSBUF .14 %PNBJO4QFDJpD 7JTJPO͸$PSF.-͕ϕʔεʹͳ͍ͬͯΔ

Slide 9

Slide 9 text

ΞϓϦέʔγϣϯ 7JTJPO /-1
 /BUVSBM-BOHVBHF1SPDFTTJOH $PSF.- "DDFMFSBUF .14 %PNBJO4QFDJpD ྡΓʹ͋Δ/-1͸'PVOEBUJPOʹ૊Έࠐ·Ε͍ͯͯɺ /4-JOHVJTUJD5BHHFSͳͲͰ࢖ΘΕ͍ͯΔͱͷ͜ͱ

Slide 10

Slide 10 text

ࠓճ΍Γ͔ͨͬͨͷ͸ɺ 7JTJPOͰόʔίʔυΛݕग़͢Δ͜ͱ

Slide 11

Slide 11 text

Barcode Detection IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXEDΑΓ

Slide 12

Slide 12 text

w 7JTJPOΛ࢖ͬͯόʔίʔυͷݕग़Λ͍ͨ͠ w ݁࿦͔Βݴ͏ͱ7JTJPO.-&YBNQMFͱ͍͏88%$ ͷηογϣϯͰ΋࢖ΘΕ͍ͯͨαϯϓϧΛݩʹػց ֶशͷ஌͕ࣝͳͯ͘΋͢ΜͳΓ7JTJPO͸ಈ͔͢͜ͱ ͕Ͱ͖ͨ w ͨͩ͠ͱ͍͏࿩Λ͢Δ

Slide 13

Slide 13 text

࣮૷ํ๏

Slide 14

Slide 14 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXEDΑΓ Analyzing an Image The Machinery The Results The Asks

Slide 15

Slide 15 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXEDΑΓ Analyzing an Image The Machinery The Results The Asks Requests VNDetectBarcodesRequest VNDetectFaceLandmarksRequest VNDetectFaceRectanglesRequest … Observations VNClassificationObservation VNDetectedObjectObservation VNFaceObservation … RequestHandler VNImageRequestHandler

Slide 16

Slide 16 text

w ը૾͔ΒόʔίʔυΛݕग़ w 7/%FUFDU#BSDPEFT3FRVFTUΛ࢖ͬͯɺը૾͔Β όʔίʔυΛಡΈऔΔ

Slide 17

Slide 17 text

Analyzing an Image The Machinery The Results The Asks Requests VNDetectBarcodesRequest VNDetectFaceLandmarksRequest VNDetectFaceRectanglesRequest … Observations VNClassificationObservation VNDetectedObjectObservation VNFaceObservation … RequestHandler VNImageRequestHandler IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXEDΑΓ

Slide 18

Slide 18 text

let handler = VNImageRequestHandler(ciImage: ciImage, orientation: orientation) try! handler.perform([barcodeClassificationRequest])

Slide 19

Slide 19 text

w ը૾͔Βόʔίʔυͷ*4#/ίʔυΛऔΓग़͢

Slide 20

Slide 20 text

Analyzing an Image The Machinery The Results The Asks Requests VNDetectBarcodesRequest VNDetectFaceLandmarksRequest VNDetectFaceRectanglesRequest … Observations VNClassificationObservation VNDetectedObjectObservation VNFaceObservation … RequestHandler VNImageRequestHandler IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXEDΑΓ

Slide 21

Slide 21 text

lazy var barcodeClassificationRequest: VNDetectBarcodesRequest = { return VNDetectBarcodesRequest(completionHandler: { request, error in guard let observations = request.results as? [VNBarcodeObservation] else { return } let rects = observations.map { $0.boundingBox } DispatchQueue.main.async { [weak self] in for rect in rects { let view = UIView(frame: convertedRect(rect: rect, to: self!.imageView.frame.size)) view.backgroundColor = .green self?.imageView.addSubview(view) } } let _ = observations.flatMap { observation -> CIBarcodeDescriptor? in if let desc = observation.barcodeDescriptor as? CIBarcodeDescriptor { return desc } else { return nil } } }) }()

Slide 22

Slide 22 text

lazy var barcodeClassificationRequest: VNDetectBarcodesRequest = { return VNDetectBarcodesRequest(completionHandler: { request, error in guard let observations = request.results as? [VNBarcodeObservation] else { return } let rects = observations.map { $0.boundingBox } DispatchQueue.main.async { [weak self] in for rect in rects { let view = UIView(frame: convertedRect(rect: rect, to: self!.imageView.frame.size)) view.backgroundColor = .green self?.imageView.addSubview(view) } } let _ = observations.flatMap { observation -> CIBarcodeDescriptor? in if let desc = observation.barcodeDescriptor as? CIBarcodeDescriptor { return desc } else { return nil } } }) }()

Slide 23

Slide 23 text

ͱΓ͋͑ͣͰ͖ͨ

Slide 24

Slide 24 text

͕ɺ

Slide 25

Slide 25 text

όʔίʔυ͕Ͳ͜ʹ͋Δ͔͸Θ͔͚ͬͨͲɺ ಺༰ʢ&"/ίʔυʣ͸෼͔Βͳ͔ͬͨʜ

Slide 26

Slide 26 text

lazy var barcodeClassificationRequest: VNDetectBarcodesRequest = { return VNDetectBarcodesRequest(completionHandler: { request, error in guard let observations = request.results as? [VNBarcodeObservation] else { return } let rects = observations.map { $0.boundingBox } DispatchQueue.main.async { [weak self] in for rect in rects { let view = UIView(frame: convertedRect(rect: rect, to: self!.imageView.frame.size)) view.backgroundColor = .green self?.imageView.addSubview(view) } } let _ = observations.flatMap { observation -> CIBarcodeDescriptor? in if let desc = observation.barcodeDescriptor as? CIBarcodeDescriptor { return desc } else { return nil } } }) }()

Slide 27

Slide 27 text

w $*#BS$PEF%FTDSJQUPSͰ&"/ίʔυ͕औಘͰ͖Δ͸ ͣɺͱࢥ͍͕ͬͯͨɺͦΜͳ΋ͷ͸ͳ͔ͬͨ w $*#BS$PEF%FTDSJQUPS͸/40CKFDUͷαϒΫϥεͰ ಛʹԿ΋࣮૷͞Ε͍ͯͳ͍

Slide 28

Slide 28 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXEDΑΓ Framework Barcode Support Several frameworks support various barcodes types AVFoundation.framework Vision.framework CoreImage.framework Detection of barcodes
 during capture Detection of barcodes
 after capture Rendering barcodes CIBarcodeDescriptor

Slide 29

Slide 29 text

IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPODPSFJNBHFDJCBSDPEFEFTDSJQUPS

Slide 30

Slide 30 text

w ࣮૷͸$*#BS$PEF%FTDSJQUPSͷαϒΫϥεʹҕͶΒ Ε͍ͯͯɺ͍·ཉ͍͠΋ͷ&"/ίʔυʹରԠͨ͠ ΋ͷ͸ͳ͔ͬͨ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPODPSFJNBHFDJCBSDPEFEFTDSJQUPS

Slide 31

Slide 31 text

w $*23$PEF%FTDSJQUPS w $*"[UFD$PEF%FTDSJQUPS w $*1%'$PEF%FTDSJQUPS w $*%BUB.BUSJY$PEF%FTDSJQUPS ରԠ͍ͯ͠Δ̎࣍ݩίʔυ

Slide 32

Slide 32 text

Framework Barcode Support Several frameworks support various barcodes types AVFoundation.framework Vision.framework CoreImage.framework Detection of barcodes
 during capture Detection of barcodes
 after capture Rendering barcodes CIBarcodeDescriptor

Slide 33

Slide 33 text

·ͱΊ w 7JTJPOΛ࢖͏ͱόʔίʔυ͕ը૾ͷதʹ͋Δͱ͍͏ ͜ͱ͸෼͔Δ w ը໘্ͷͲ͜ʹ͋Δ͔ͷ࠲ඪ͸औΕΔͷͰɺؤுͬ ͯ&"/ίʔυม׵·Ͱ͸Ͱ͖Δ͸ͣ w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZ XXED UJNF

Slide 34

Slide 34 text

͓ΘΓ