如何二值图转化为灰度图_数字图像处理|P9第三章数字图像处理基础 第二节灰度变换...

第二节 灰度变换

曝光不足或过度,或由于成像设备的非线性和图像记录设备动态范围太窄等因素,会产生对比度不足的弊病,使图像中的细节分辨不清。

可以使用灰度变换方法解决这些问题。

简单讲,对比度是最白与最黑亮度单位的相除值。白色越亮、黑色越暗,对比度就越高。

灰度级变换(点运算)定义:

像素灰度值变换函数: g(x,y)=T(f(x,y))

灰度值变换函数:R=T(r)

()线性灰度变换

       g(x,y)=T[f(x,y)]      T[]:线性变换函数

1.加常数

     g(x,y)=f(x,y)+或者-C

作用:压缩动态范围,降低对比度

c9b263e1cdccef7211931ff9480b492b.png

de3b046799d737cde9a64f70f7d6ed51.png

增大了图像的亮度

b0bb0f87e8d465da5ecde5caf2d5472f.png

降低了图像的亮度

51d5e4aab53f8567a60e2c914c87e2b5.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于OpenCV的C++代码实现对二像进行骨架提取: ```c++ #include <opencv2/opencv.hpp> using namespace cv; void thinningIteration(Mat& img, int iter) { Mat marker = Mat::zeros(img.size(), CV_8UC1); for (int i = 1; i < img.rows - 1; i++) { for (int j = 1; j < img.cols - 1; j++) { uchar p2 = img.at<uchar>(i - 1, j); uchar p3 = img.at<uchar>(i - 1, j + 1); uchar p4 = img.at<uchar>(i, j + 1); uchar p5 = img.at<uchar>(i + 1, j + 1); uchar p6 = img.at<uchar>(i + 1, j); uchar p7 = img.at<uchar>(i + 1, j - 1); uchar p8 = img.at<uchar>(i, j - 1); uchar p9 = img.at<uchar>(i - 1, j - 1); int A = (p2 == 0 && p3 == 1) + (p3 == 0 && p4 == 1) + (p4 == 0 && p5 == 1) + (p5 == 0 && p6 == 1) + (p6 == 0 && p7 == 1) + (p7 == 0 && p8 == 1) + (p8 == 0 && p9 == 1) + (p9 == 0 && p2 == 1); int B = p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9; int m1 = iter == 0 ? (p2 * p4 * p6) : (p2 * p4 * p8); int m2 = iter == 0 ? (p4 * p6 * p8) : (p2 * p6 * p8); if (A == 1 && (B >= 2 && B <= 6) && m1 == 0 && m2 == 0) { marker.at<uchar>(i, j) = 1; } } } img &= ~marker; } void thinning(Mat& img) { img /= 255; Mat prev = Mat::zeros(img.size(), CV_8UC1); Mat diff; do { thinningIteration(img, 0); thinningIteration(img, 1); absdiff(img, prev, diff); img.copyTo(prev); } while (countNonZero(diff) > 0); img *= 255; } int main() { Mat src = imread("binary_image.png", IMREAD_GRAYSCALE); if (src.empty()) { return -1; } Mat dst = src.clone(); thinning(dst); imshow("Thinning", dst); waitKey(0); return 0; } ``` 该代码实现了Zhang-Suen骨架提取算法的过程,将二像进行骨架提取,并通过可视化展示提取结果。需要注意的是,在实际使用中,还需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值