资源简介

可应用于数字图像处理,将灰度图像或者彩色图像R,G,B某个通道的图像转换为二值图像,也称半色调处理

资源截图

代码片段和文件信息

function stucki = stucki_ht(imagefilename)
% 误差扩散算法——stucki半调算法。将灰度图像很好的转换为二值图像。
% 对输入的image图像进行stucki半色调处理并将生成的半色调图像保存为文件
% image:待半色调处理的图像
% filename:保存为图像文件的文件名
% stucki半色调算法是有半色调算法中误差扩散的一种。

[mn]=size(image);
t=ones(mn)/2;
e=zeros(mn);       %e为量化误差矩阵,初始值为零
image=double(image);

for i=1:m
    for j=1:n
        lu1 = LU1(ije);
        lu2 = LU2(ije);
        lu3 = LU3(ije);
        lu4 = LU4(ije);
        u1  = U1(ije);
        u2  = U2(ije);
        ru1 = RU1(ije);
        ru2 = RU2(ije);
        ru3 = RU3(ije);
        ru4 = RU4(ije);
        l1  = L1(ije);
        l2  = L2(ije);
        aij = lu1 + lu2 + lu3 + lu4 + u1 + u2 + ru1 + ru2 + ru3 + ru4 + l1 +l2;
        fij = image(ij)/255 - aij;
        if fij < t(ij)     %t是阈值模板
            stucki(ij) = 0;     % 0为黑
        else
            stucki(ij) = 1;
        end
        e(ij) = stucki(ij) - fij;
    end
end

%imshow(stucki);
imwrite(stuckistrcat(filename‘_stucki_halftone.bmp‘)‘bmp‘);

%|----------------------|   |----------------------| 
%|              8   4   |   |lu4  lu3  u2  ru3  ru4|
%|  2   4   8   4   2   |   |lu2  lu1  u1  ru1  ru2|
%|  1   2   4   2   1   |   |l2   l1               |
%|----------------------|   |----------------------|

% 左上方
function y = LU1(ije)
h = 4

评论

共有 条评论