PHP头条
热点:

图片灰度和二值化处理-PHP源码


图片灰度和二值化处理

 &$row){
        foreach($row as $x => &$Y){
            $rgb = imagecolorat($im, $x, $y);
            // 根据颜色求亮度
            $B = $rgb & 255;
            $G = ($rgb >> 8) & 255;
            $R = ($rgb >> 16) & 255;
            $Y = ($R * 19595 + $G * 38469 + $B * 7472) >> 16;
        }
    }
    unset($row, $Y);
 
    // 自动求域值
    $back = 127;
    do{
        $crux = $back;
        $s = $b = $l = $I = 0;
        foreach($gray as $row){
            foreach($row as $Y){
                if($Y < $crux){
                    $s += $Y;
                    $l++;
                }else{
                    $b += $Y;
                    $I++;
                }
            }
        }
        $s = $l ? floor($s / $l) : 0;
        $b = $I ? floor($b / $I) : 0;
        $back = ($s + $b) >> 1;
    }while($crux != $back);
 
    // 二值化
    $bin = $gray;
    foreach($bin as &$row){
        foreach($row as &$Y){
            $Y = $Y < $crux ? 0 : 1;
        }
    }
 
    return array(
        $gray,
        $bin,
    );
}
 
if(empty($_GET["img"])){
    exit("Please use $_SERVER[SCRIPT_NAME]?img=local/image/path");
}
if(!$im = adaptiveThreshold($_GET["img"])){
    exit("error!");
}
 
$img = imagecreate(count($im[0][0]), count($im[0]) * 2);
$rgb = array(
    imagecolorallocate($img, 0, 0, 0),
    imagecolorallocate($img, 255, 255, 255),
);
 
$x = $y = 0;
$colors = array(
    0 => $rgb[0],
    255 => $rgb[1]
);
foreach($im[0] as $row){
    do{
        if(isset($colors[$row[$x]])){
            $c = $colors[$row[$x]];
        }else{
            $c = $colors[$row[$x]] = imagecolorallocate($img, $row[$x], $row[$x], $row[$x]);
        }
//      imagesetpixel($img, $x, $y, $rgb[$row[$x] < 128 ? 0 : 1]);
        imagesetpixel($img, $x, $y, $c);
    }while(isset($row[++$x]));
    $x = 0;
    $y++;
}
 
foreach($im[1] as $row){
    do{
        imagesetpixel($img, $x, $y, $rgb[$row[$x]]);
    }while(isset($row[++$x]));
    $x = 0;
    $y++;
}
 
header("Content-Type: image/gif");
imagegif($img);

以上就是图片灰度和二值化处理的内容,更多相关内容请关注PHP中文网(www.php1.cn)!

www.phpzy.comtrue/php/39888.htmlTechArticle图片灰度和二值化处理-PHP源码 图片灰度和二值化处理 $Y){ $rgb = imagecolorat($im, $x, $y); // 根据颜色求亮度 $B = $rgb $G = ($rgb >> 8) $R = ($rgb >> 16) $Y = ($R * 19595 + $G * 38469 + $B * 7472) >> 16; } } unset...

相关文章

PHP之友评论

今天推荐