Índice
-
- Prefácio:
- 1. Use o método de transformação linear em tons de cinza (g(x,y)=k*f(x,y)+d) para realizar três transformações em tons de cinza em uma imagem (personalizada), incluindo aprimoramento de contraste, aumento de brilho e inversão. É necessário apresentar a imagem original e a imagem após a transformação em tons de cinza e explicar o processo de processamento e os resultados do processamento;
- 2. Use o método de transformação de limite de escala de cinza para exibir o valor binário da imagem de destino e o fundo em uma imagem. É necessário apresentar a imagem original e a imagem após a transformação de limite de escala de cinza e explicar o processo de processamento e os resultados do processamento;
- 3. O realce de contraste é realizado em uma imagem (como mostrado na Figura 3.2) por transformação linear segmentada em tons de cinza (como mostrado na Figura 3.1). É necessário apresentar a imagem original e a imagem após a transformação em escala de cinza e explicar o processo de processamento e os resultados do processamento.
Prefácio:
Programa Matlab e link de recurso de imagem
1. Use o método de transformação linear em tons de cinza (g(x,y)=k*f(x,y)+d) para realizar três transformações em tons de cinza em uma imagem (personalizada), incluindo aprimoramento de contraste, aumento de brilho e inversão. É necessário apresentar a imagem original e a imagem após a transformação em tons de cinza e explicar o processo de processamento e os resultados do processamento;
Programa Matlab: (versão 2016a)
clc;
clear;
close all;
% 对灰度图进行灰度线性变换
img = imread('hua.jpg');
img = rgb2gray(img);
%k大于1 增大图像的对比度,图像的像素值在变换后全部增大,整体效果被增强
k = 1.25;
d = 0;
gray1 = img * k + d;
%k等于1 通过调整b ,实现对图像亮度的调整
k = 1;
d = 50;
gray2 = img * k + d;
%k∈(0,1) 图像的对比度被削弱
k = 0.5;
d = 0;
gray3 = img * k + d;
%k小于0 原来图像亮的区域变暗,原来图像暗的区域变亮 取反
k = -1;
d = 255;
img_1 = im2double(img);
gray4 = img_1 * k + 1.0;
subplot(5,2,1),imshow(img),title('原图');
subplot(5,2,2),imhist(img),title('原图直方图');
subplot(5,2,3),imshow(gray1),title('k>0 d=0');%增大对比度
subplot(5,2,4),imhist(gray1),title('k>0 d=0直方图');
subplot(5,2,5),imshow(gray2),title('k=1 d=50');%调节亮度
subplot(5,2,6),imhist(gray2),title('k=1 d=50直方图');
subplot(5,2,7),imshow(gray3),title('k=0.5 d=0');%对比度削弱
subplot(5,2,8),imhist(gray3),title('k=0.5 d=0直方图');
subplot(5,2,9),imshow(gray4),title('k=-1 d=255');%取反
subplot(5,2,10),imhist(gray4),title('k=-1 d=255直方图');
Imagem original, imagem processada:
Descrição do processo e resultados do processamento:
A transformação linear em tons de cinza é transformar os valores de pixel da imagem por meio de uma função linear especificada para aumentar ou reduzir a escala de cinza da imagem.
A fórmula da transformação linear em tons de cinza é uma função linear unidimensional comum:
g(x,y)=k*f(x,y)+d
Seja x o valor original em tons de cinza, então o valor transformado em tons de cinza y:
y= kx +d (0≤y≤255)
Ao alterar os valores de K e D, o processamento linear da escala de cinza da imagem pode ser realizado. Através dos resultados do programa em execução, podemos ver que: quando k>1, a textura da flor é mais clara que a imagem original e o contraste da imagem é aumentado, e quando 0<k<1, o contraste e o efeito geral de a imagem está enfraquecida. E quando k=1, o brilho geral da imagem pode ser ajustado ajustando o valor D. Para obter a configuração da imagem invertida k<0, verifica-se que a imagem obtida mudou significativamente em relação à imagem original, na qual as áreas mais claras da imagem original se tornam mais escuras, enquanto as áreas mais escuras se tornam mais claras, e um comportamento semelhante foto é obtida Efeito negativo.
2. Use o método de transformação de limite de escala de cinza para exibir o valor binário da imagem de destino e o fundo em uma imagem. É necessário apresentar a imagem original e a imagem após a transformação de limite de escala de cinza e explicar o processo de processamento e os resultados do processamento;
Programa Matlab: (versão 2016a)
%清空工作区
clc,clear,close all;
%读入原图像
img = imread('paizi.jpg');
imggray=rgb2gray(img);
%采用OTSU算法来获取全局阈值,自动选取阈值
img_i = graythresh(img);
Image2 = im2bw(img,img_i);%二值化
%人工选定阈值进行分割,选择阈值为观察直方图波峰所得
T1=70;
[width,height]=size(imggray);
Image1 = zeros(width,height);
for i=1:width
for j=1:height
if(imggray(i,j)<T1)
Image1(i,j)=0;
else
Image1(i,j)=1;
end
end
end
subplot(3,2,1);imshow(img);title('原图');
subplot(3,2,2);imhist(imggray);title('原图直方图');
subplot(3,2,3);imshow(Image1),title('全局阈值分割效果图');
subplot(3,2,4);imhist(Image1);title('全局阈值分割直方图');
subplot(3,2,5);imshow(Image2),title('OTUS分割效果图');
subplot(3,2,6);imhist(Image2);title('OTUS分割直方图');
Imagem original, imagem processada;
Descrição do processo e resultados do processamento:
De acordo com as informações, o histograma de cinza é uma função da distribuição dos níveis de cinza. Quando a imagem na imagem em tons de cinza é relativamente simples e a distribuição em tons de cinza do objeto é relativamente regular, o fundo e o objeto formam um pico no histograma em tons de cinza da imagem. Como uma depressão é formada entre cada dois picos, picos duplos são selecionado. O valor de cinza correspondente ao vale no intervalo é o limite, que pode separar as duas regiões. Com base nesse princípio, primeiro convertemos a imagem em uma imagem em escala de cinza e a exibimos como um histograma em escala de cinza.Ao observar o histograma em escala de cinza, selecionamos o vale entre os picos mais óbvios como nosso limite manual.
Dois algoritmos (método de segmentação de limite global e método de Otsu de limite global) são selecionados para a segmentação de binarização.
Método de segmentação de limite global:
Apenas um limite é usado em toda a imagem, e esse método é chamado de método de limite global. A imagem inteira é dividida em duas regiões, ou seja, o objeto de destino (preto) e o objeto de fundo (branco). Limiar global limita a escala de cinza de toda a imagem para um valor constante. Aqui escolhemos 70 como o limite inicial para processamento de acordo com o histograma. O diagrama de efeitos mostra que esse método é viável, o plano de fundo e o outdoor são segmentados e as palavras do anúncio da marca são claras; o algoritmo
Otsu
obtém principalmente o valor do limite de cinza por meio da função graythresh e, em seguida, usa a função im2bw para converter em um valor binário.
Pode-se ver nas duas operações que o algoritmo Otsu obviamente tem um melhor efeito de processamento, e o processo de limiarização na imagem é obviamente mais disperso em valores de pixel, o que é melhorado ainda mais do que o efeito de segmentação global de um único limiar no histograma .
3. O realce de contraste é realizado em uma imagem (como mostrado na Figura 3.2) por transformação linear segmentada em tons de cinza (como mostrado na Figura 3.1). É necessário apresentar a imagem original e a imagem após a transformação em escala de cinza e explicar o processo de processamento e os resultados do processamento.
Figura 3.1 Transformação linear por partes
Figura 3.2 Imagem original
Programa Matlab: (versão 2016a)
clc;clear;close all;
Image = im2double(rgb2gray(imread('zuoye.jpg'))); %读取并对图做处理
[h,w] = size(Image); % 获取图像尺寸 h:height,高度;w:width 宽度
NewImage1 = zeros(h,w); % 赋初值
NewImage2 = zeros(h,w);
NewImage3 = Image;
%确定abcd四个参数的值
a = 30/256;b = 100/256;c= 75/256;d= 200/256;
for x = 1 : w % 最外层循环 宽度
for y = 1 : h % 内层循环 高度
% 在灰度图像中 按列从上至下循环
if Image(y,x)<a %若(y,x)处值<a时
NewImage1(y,x) = Image(y,x)*c/a;
elseif Image(y,x)<b % 若(y,x)处值<b时
NewImage1(y,x) = (Image(y,x)-a)*(d-c)/(b-a)+c;
else % 其他情况 做以下处理
NewImage1(y,x) = (Image(y,x)-b)*(1-d)/(1-b)+d;
end
if Image(y,x)>a&& Image(y,x)<b % 介于(a,b)之间 做下行处理
NewImage3(y,x) = (Image(y,x)-a)*(d-c)/(b-a)+c;
end
end
end
NewImage2 = imadjust(Image,[a;b],[c;d]);
figure;
subplot(2,2,1);imshow(Image);title('原始图像');
subplot(2,2,3);imshow(NewImage1);title('分段线性灰度级变换图像');
subplot(2,2,2);imhist(Image);title('原始图像直方图');
subplot(2,2,4);imhist(NewImage1);title('分段线性灰度级变换图像直方图');
figure;
subplot(2,2,1);imshow(NewImage2);title('截断式灰度级变换图像');
subplot(2,2,3);imshow(NewImage3);title('高低灰度级保持不变图像');
subplot(2,2,2);imhist(NewImage2);title('截断式灰度级变换图像直方图');
subplot(2,2,4);imhist(NewImage3);title('高低灰度级保持不变图像直方图');
Imagem original, imagem processada;
Uma descrição do processo e resultados do processamento;
Quando a imagem está subexposta ou superexposta, o nível de cinza da imagem pode ser limitado a uma pequena faixa, e o que você vê neste momento será uma imagem borrada sem níveis de cinza. O uso de uma função linear de valor único para expandir linearmente cada pixel na imagem melhorará efetivamente o efeito visual da imagem.
Semelhante à transformação linear em tons de cinza, a transformação linear por partes é uma transformação linear realizada em segmentos, que divide o intervalo de tons de cinza da imagem em dois ou mais segmentos e executa diferentes transformações lineares, respectivamente. O objetivo da transformação linear por partes é destacar o alvo ou intervalo de escala de cinza de interesse e suprimir relativamente as regiões de escala de cinza que não são de interesse. A transformação pode ser expressa como:
f é o valor de cinza da imagem original, g é o valor de cinza da imagem após a transformação linear da escala de cinza;
ideia de programação:
primeiro leia e processe a imagem, obtenha o tamanho da imagem e atribua valores iniciais para vários valores de imagens são usados para armazenamento subsequente. Depois de determinar os valores dos quatro parâmetros de abcd, dois ninhos de loop são usados para percorrer o array de imagens para realizar a operação da função de segmento. Então, de acordo com diferentes situações, operações correspondentes são realizadas para diferentes valores de segmentos. Finalmente, os resultados são exibidos em um histograma.
Análise experimental:
Sabendo que o valor abcd é diferente, pode haver quatro situações, a saber, o valor em (y, x) < a, o valor em (y, x) < b, entre (a, b) e outras Situação , as inclinações dos quatro casos são diferentes e, de acordo com a lei de transformação do valor de cinza, pode-se saber que a
inclinação afeta o contraste da imagem, então a parte do baixo valor de cinza deve ser comprimida e o efeito é que a parte escura é mais escura e o contraste é menor. , como resultado da imagem, podemos ver claramente que o fundo escuro é mais escuro e, combinado com o histograma, podemos ver que a parte de baixo valor de cinza é compactada para um valor de cinza mais baixo.
Correspondente a ela está a parte de alto valor de cinza. Podemos ver pela curva de transformação que o valor dessa parte aumenta, indicando que a parte geral de alto valor de cinza muda para a direita do eixo x, e o resultado é que o brilho parte fica mais brilhante.
Resumo:
A função linear por partes também é uma operação de ponto, aprimoramento de imagem baseado em pixel, ou seja, alongamento de contraste. O princípio geral é: o processo de mapear o valor de cinza de diferentes intervalos de escala de cinza para outro intervalo de escala de cinza por meio de diferentes funções de mapeamento.