主页

MVVM 架构演进 —— 初探

一. 什么是 MVVM ?

MVVM 是前端一款数据驱动的架构

  • Model: 网络接口数据, 本地缓存数据等
  • View: Activity, Fragment, DialogFragment…..
  • ViewModel: 提供数据源, 处理业务逻辑

二. MVVM 与 MVP 的区别是什么?

MVVM 与 MVP 十分的相似, MVVM 是从 MVP 架构演进而来的

  • MVP 通过 Presenter 做到了数据和视图的解耦, 但是 Presenter 层的任务就变得十分之重, View 与 Presenter 交互要写很多的接口, 接口粒度的控制也不容易把控
  • ViewModel 是为了解决 MVP 中 Presenter 过重这个问题而生的, ViewModel 和 View 之间的通信并不需要通过接口来回进行数据导入导出, 而是通过注册观察者, 当数据变更时会自动的反应到与之绑定的 View 上

阅读更多

OpenCV 实战 —— 二维码识别

一. 特征分析

示例图片

  • 二维码的区域都是方形的
  • 矩形的 左/右/下 区域有三个标识符, 可以为圆形, 可以为方形

二. 实现思路

  • 图片转灰度
  • 二值化, 自动阈值
  • 轮廓查找
  • 轮廓的筛选
    • 考虑图片被旋转的问题
    • 根据轮廓面积比例去判断
      • 二维码特征符, 夹层白色面积/中心黑色面积 约等于 2

阅读更多

OpenCV 实战 —— 人像美容(一) 积分图算法

一. 什么是积分图(Integral Image)

积分图是一种在图像中快速计算矩形区域和的方法

二. 为什么要使用积分图?

我们知道在均值模糊操作时, 需要统计滑动窗口中所有像素的和然后取平均值

  • 假设窗口大小为 w*w, 那么对于 n * m 的图片, 进行一次模糊操作, 其时间复杂度为 O(n * m * w * w)

阅读更多

Android NDK —— JPEG 压缩的优化

前言

若想将一 RGB 的像素值封装成 JPEG 输出, 主要需要经过如下几步

色彩空间的转化 -> 离散余弦变换DCT -> 数据量化(Quantization) -> 压缩编码

为了优化 Android 的 JPEG 压缩率, 这里利用 libjpeg-turbo 探究一下 不同压缩编码的性能表现, 文章主体如下

  • 编译 libjpeg-turbo
  • JPEG 压缩编码性能比较
  • Android JPEG 压缩的优化

阅读更多

OpenCV 特征匹配 —— HOG 行人检测

什么是 HOG

方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。

使用领域

HOG 特征结合 SVM 分类器已经被广泛应用于图像识别中,尤其在行人检测中。而如今虽然有很多行人检测算法不断提出,但基本都是以 HOG + SVM 的思路为主。

阅读更多

OpenCV 统计学 —— 直方均衡补偿

前言

通过直方图的绘制可知, 通过统计的数据处理图像, 可以获取更好的动态效果, 那么直方均衡补偿就是对统计数据的一个很好地应用

一. 算法实现

  • 直方图的统计
  • 计算直方图中像素的概率
  • 计算像素的累加概率
  • 生成映射表
  • 从映射表中查找数据

阅读更多