i am converting a RGB image to ycbcr image for processing. but when i try to convert the ycbcr image back to RGB image there is an error in the original image what should i do to remove or altease furthur reduce the image?
3 ビュー (過去 30 日間)
古いコメントを表示
clc
clear all;
close all;
RGB = imread('board.tif');%read image
ycbcr=rgb2ycbcr(RGB);%converting RGB image to Ycrcb color space
%\\extracting y,cb,cr planes saperately\\
test_ycbcr(:,:,1)=ycbcr(:,:,1);
test_ycbcr(:,:,2)=ycbcr(:,:,2);
test_ycbcr(:,:,3)=ycbcr(:,:,3);
%\\merging to form a new ycbcr image(same image in this case)and converting it to RGB color space\\
test_rgb=ycbcr2rgb(test_ycbcr);
%\\error calculation
error=(test_rgb-RGB).^2;
[m n o]=size(test_ycbcr);
MSE=sum(sum(sum(error)))/(m*n*o)
PSNR = 10 * log10( 255^2 / MSE)
0 件のコメント
回答 (1 件)
DGM
2023 年 5 月 7 日
For a start, we can clean this up.
RGB = imread('board.tif'); % read image
% converting RGB image to YCbCr color space
ycbcr = rgb2ycbcr(RGB);
% duplicate the YCC image
% i'm assuming this is a placeholder for some other calculations
test_ycbcr = ycbcr;
% convert it to RGB color space
test_rgb = ycbcr2rgb(test_ycbcr);
% error calculation
MSE = immse(test_rgb,RGB)
PSNR = psnr(test_rgb,RGB)
This error should be expected. See this thread, and all the comments for a discussion of the sources of the error, and see this answer for the only way to obtain a lossless round-trip conversion.
TL;DR: You aren't generally going to get a lossless round-trip conversion from RGB to YCbCr and back. You can do it in YCoCg or YCoCg-R, but those aren't YCbCr.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Convert Image Type についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!